Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyelesaikan Ralat 'Mesti Mengisytiharkan Pembolehubah Skalar' dalam Prosedur Tersimpan Pelayan SQL?
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;
Gunakan:
SET @sql = N'DECLARE @Rt int; SET @Rt = ' + CONVERT(VARCHAR(12), @RowTo);
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;
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!