Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengambil Data dengan Betul daripada Prosedur Tersimpan dalam ASP Klasik?

Bagaimana untuk Mengambil Data dengan Betul daripada Prosedur Tersimpan dalam ASP Klasik?

DDD
Lepaskan: 2025-01-10 08:04:57
asal
775 orang telah melayarinya

How to Correctly Retrieve Data from Stored Procedures in Classic ASP?

ASP Klasik dan Prosedur Tersimpan: Pendapatan Data Cekap

Mendapatkan semula data daripada prosedur yang disimpan dalam aplikasi ASP Klasik selalunya memberikan cabaran. Artikel ini menangani masalah biasa di mana pelaksanaan prosedur tersimpan gagal mengisi set rekod, mengakibatkan respons kosong atau salah.

Masalahnya: Set Rekod Kosong

Pembangun kerap menghadapi situasi di mana kod ASP Klasik mereka, yang direka untuk mendapatkan semula data daripada prosedur yang disimpan, mengembalikan set rekod kosong. Arahan pangkalan data kelihatan betul, namun data yang dijangka kekal tidak boleh diakses.

Contoh dan Analisis Kod

Mari kita periksa coretan kod biasa yang menggambarkan isu ini:

<code class="language-asp">Set conn = Server.CreateObject("ADODB.Connection")
conn.open "PROVIDER=SQLOLEDB;DATA SOURCE=X;DATABASE=Y;UID=Z;PWD=W;"
Set objCommandSec = CreateObject("ADODB.Command")
With objCommandSec
    Set .ActiveConnection = Conn
    .CommandType = 4
    .CommandText = "usp_Targets_DataEntry_Display"
    .Parameters.Append .CreateParameter("@userinumber ", 200, 1, 10, inumber)
    .Parameters.Append .CreateParameter("@group ", 200, 1, 50, "ISM")
    .Parameters.Append .CreateParameter("@groupvalue", 200, 1, 50, ismID)
    .Parameters.Append .CreateParameter("@targettypeparam ", 200, 1, 50, targetType)
End With

set rs = Server.CreateObject("ADODB.RecordSet")
rs = objCommandSec.Execute

while not rs.eof
    response.write (1)
    response.write (rs("1_Q1"))
    rs.MoveNext
wend
response.write (2)</code>
Salin selepas log masuk

Penyelesaian: Pengendalian Set Rekod yang Betul

Masalah utama terletak pada baris ini:

<code class="language-asp">rs = objCommandSec.Execute</code>
Salin selepas log masuk

Tugasan yang salah ini menghalang pengambilan data yang betul. Pendekatan yang diperbetulkan ialah:

<code class="language-asp">set rs = Server.CreateObject("ADODB.RecordSet")
rs.open objCommandSec</code>
Salin selepas log masuk

Dengan menggunakan rs.open objCommandSec, kami membuka set rekod dengan betul menggunakan objek arahan, membolehkan pengambilan data.

Amalan Terbaik untuk Interaksi Prosedur Tersimpan

Berikut ialah beberapa amalan yang disyorkan untuk meningkatkan kecekapan dan kebolehpercayaan kod ASP Klasik anda yang berinteraksi dengan prosedur tersimpan:

  • Sambungan Terus dalam Perintah: Daripada membuat dan membuka ADODB.Connection yang berasingan, tetapkan rentetan sambungan secara langsung kepada sifat .ActiveConnection bagi objek ADODB.Command. Ini memudahkan kod dan meningkatkan prestasi.

  • TETAPKAN NOKAUN PADA: Untuk prosedur tersimpan yang melaksanakan operasi INSERT atau UPDATE, masukkan SET NOCOUNT ON dalam kod SQL anda. Ini menghalang prosedur tersimpan daripada mengembalikan kiraan baris yang terjejas, yang boleh membawa kepada set rekod tertutup sebelum waktunya.

  • Pertimbangkan Tatasusunan untuk Kesederhanaan: Untuk pengendalian data yang lebih mudah, pertimbangkan untuk menggunakan tatasusunan dan bukannya ADODB.Recordset untuk lelaran melalui keputusan. Ini selalunya boleh membawa kepada kod yang lebih cekap dan boleh dibaca.

Atas ialah kandungan terperinci Bagaimana untuk Mengambil Data dengan Betul daripada Prosedur Tersimpan dalam ASP Klasik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan