Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan Prosedur Tersimpan dengan Cekap dan Mendapatkan Keputusan dalam ASP Klasik?

Bagaimana untuk Melaksanakan Prosedur Tersimpan dengan Cekap dan Mendapatkan Keputusan dalam ASP Klasik?

Susan Sarandon
Susan Sarandonasal
2025-01-10 10:22:41424semak imbas

How to Efficiently Execute Stored Procedures and Retrieve Results in Classical ASP?

Pelaksanaan Prosedur Tersimpan ASP Klasik dan Pengambilan Keputusan: Amalan Terbaik

Pembangun ASP klasik sering menghadapi cabaran apabila bekerja dengan prosedur tersimpan SQL Server, terutamanya mengenai perolehan semula hasil. Respons kosong atau set rekod tertutup adalah masalah biasa, walaupun apabila prosedur harus mengembalikan data. Ini selalunya berpunca daripada mengabaikan tetapan SQL Server yang penting dan pengendalian data yang tidak cekap dalam kod ASP.

Satu punca kerap keputusan kosong ialah mengabaikan menggunakan SET NOCOUNT ON dalam prosedur tersimpan. Secara lalai, SQL Server mengembalikan bilangan baris yang terjejas, yang boleh mengganggu set hasil sebenar. SET NOCOUNT ON memastikan hanya data yang dikembalikan.

Satu lagi kesesakan prestasi sedang berulang melalui data menggunakan ADODB.Recordset. Pendekatan ini boleh menjadi perlahan. Kaedah yang lebih cekap ialah mendapatkan semula keseluruhan keputusan yang ditetapkan ke dalam tatasusunan untuk pemprosesan seterusnya.

Pendekatan Dioptimumkan untuk Pengendalian Prosedur Tersimpan ASP Klasik:

Langkah berikut memperincikan kaedah yang dioptimumkan untuk melaksanakan prosedur tersimpan dan mendapatkan semula data dalam ASP Klasik:

  1. Segera ADODB.Command: Cipta objek ADODB.Command dan wujudkan sambungan menggunakan rentetan sambungan yang sah atau objek ADODB.Connection.

  2. Konfigurasikan Sifat Perintah: Tetapkan sifat CommandText kepada nama prosedur tersimpan dan sifat CommandType kepada adCmdStoredProc.

  3. Urus Parameter: Jika prosedur tersimpan menerima parameter, gunakan koleksi Parameters untuk menambahkannya, menyatakan jenis data dan arah (mis., adParamInput).

  4. Laksanakan dan Dapatkan Data: Jalankan arahan menggunakan kaedah Execute. Daripada memproses set rekod secara langsung, gunakan kaedah GetRows untuk memuatkan keseluruhan set hasil dengan cekap ke dalam tatasusunan dua dimensi.

Contoh Kod yang Disemak:

Berikut ialah contoh kod yang diperhalusi yang menunjukkan peningkatan ini:

<code class="language-vbscript">Const adParamInput = 1, adVarChar = 200
Dim conn_string, row, rows, ary_data

conn_string = "PROVIDER=SQLOLEDB;DATA SOURCE=X;DATABASE=Y;UID=Z;PWD=W;"

Set objCommandSec = CreateObject("ADODB.Command")
With objCommandSec
  .ActiveConnection = conn_string
  .CommandType = adCmdStoredProc
  .CommandText = "usp_Targets_DataEntry_Display"
  .Parameters.Append .CreateParameter("@userinumber", adVarChar, adParamInput, 10, inumber)
  .Parameters.Append .CreateParameter("@group", adVarChar, adParamInput, 50, "ISM")
  .Parameters.Append .CreateParameter("@groupvalue", adVarChar, adParamInput, 50, ismID)
  .Parameters.Append .CreateParameter("@targettypeparam", adVarChar, adParamInput, 50, targetType)

  Set rs = .Execute()
  If Not rs.EOF Then
    ary_data = rs.GetRows()
    rs.Close()
    Set rs = Nothing
  End If
End With
Set objCommandSec = Nothing

' Process data from the array
If IsArray(ary_data) Then
  rows = UBound(ary_data, 2)
  For row = 0 To rows
    Response.Write(ary_data(1, row) & "<br>") ' Example: Accessing the second column (index 1)
  Next
Else
  Response.Write("No data returned")
End If</code>

Kod yang disemak ini dengan cekap mengambil semula data ke dalam tatasusunan, mengelakkan overhed prestasi lelaran set rekod, yang membawa kepada pelaksanaan prosedur tersimpan yang lebih pantas dan lebih dipercayai dalam ASP Klasik. Ingat untuk mengendalikan kemungkinan ralat dengan sewajarnya dalam persekitaran pengeluaran.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Prosedur Tersimpan dengan Cekap dan Mendapatkan Keputusan dalam ASP Klasik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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