Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyelesaikan Ralat 'Mesti Mengisytiharkan Pembolehubah Skalar' dalam Prosedur Tersimpan Pelayan SQL?

Bagaimana untuk Menyelesaikan Ralat 'Mesti Mengisytiharkan Pembolehubah Skalar' dalam Prosedur Tersimpan Pelayan SQL?

Susan Sarandon
Lepaskan: 2024-12-15 08:03:14
asal
141 orang telah melayarinya

How to Resolve the

Menyelesaikan masalah "Mesti Mengisytiharkan Pembolehubah Skalar" dalam Pelayan SQL

Apabila menggunakan parameter input global (@RowFrom dan @RowTo) dalam prosedur tersimpan dan menyusun pertanyaan SQL menggunakan T-SQL, ralat mungkin berlaku jika parameter digunakan tanpa mengisytiharkannya sebagai pembolehubah skalar dalam pertanyaan.

Untuk menyelesaikan isu ini, adalah penting untuk mengisytiharkan pembolehubah sebelum menggunakannya. Walau bagaimanapun, percubaan untuk menggabungkan parameter integer (@RowTo) dengan rentetan untuk menetapkannya kepada pembolehubah baharu adalah tidak betul. Sebaliknya, gunakan fungsi CONVERT() untuk menukar nilai integer kepada rentetan untuk penyambungan.

Sebagai contoh, bukannya:

SET @sql = N'DECLARE @Rt int; SET @Rt = ' + @RowTo;
Salin selepas log masuk

Gunakan:

SET @sql = N'DECLARE @Rt int; SET @Rt = ' + CONVERT(VARCHAR(12), @RowTo);
Salin selepas log masuk

Ini memastikan bahawa parameter dianggap sebagai rentetan apabila ia dilaksanakan, mengelakkan "Mesti mengisytiharkan pembolehubah skalar" ralat.

Selain itu, pertimbangkan untuk menggunakan parameterisasi yang betul untuk memasukkan nilai parameter ke dalam pertanyaan dan bukannya penggabungan. Amalan ini meningkatkan keselamatan dengan menghalang serangan suntikan SQL. Untuk membuat parameter pertanyaan, tambah baris berikut:

EXEC sys.sp_executesql @sql,
  N'@RowFrom int, @RowTo int',
  @RowFrom, @RowTo;
Salin selepas log masuk

Dengan mengikut pengesyoran ini, anda boleh menyelesaikan ralat "Mesti mengisytiharkan pembolehubah skalar" dan memastikan pelaksanaan tepat pertanyaan SQL anda di dalam prosedur tersimpan.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Mesti Mengisytiharkan Pembolehubah Skalar' dalam Prosedur Tersimpan Pelayan SQL?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan