Apabila cuba mencipta Log Masuk SQL dalam Prosedur Tersimpan menggunakan parameter dinamik, pembangun mungkin menghadapi ralat "Sintaks salah berhampiran '@nama pengguna '." Mesej samar ini boleh mengelirukan, membawa kepada kekeliruan.
Isu asasnya ialah kenyataan CREATE LOGIN hanya menerima nama pengguna literal, bukan parameter. Untuk memintas pengehadan ini, seseorang mesti menggunakan penyelesaian:
Berikut ialah contoh cara penyelesaian ini boleh dilaksanakan:
DECLARE @sql nvarchar(max) = 'CREATE LOGIN ' + quotename(@username) + ' WITH PASSWORD = ' + quotename(@password, ''''); EXEC(@sql)
Kod ini mula-mula membina arahan SQL dinamik rentetan, memastikan bahawa nama pengguna dan kata laluan dipetik untuk keselamatan terhadap serangan suntikan SQL. Ia kemudian melaksanakan perintah SQL dinamik menggunakan pernyataan EXEC, mencipta Log Masuk SQL.
Dengan menggunakan pendekatan ini, pembangun boleh mengatasi had CREATE LOGIN hanya menerima literal dan mencipta Log Masuk SQL secara dinamik dalam Prosedur Tersimpan mereka.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Log Masuk SQL Secara Dinamik dalam Prosedur Tersimpan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!