MSSQLSERVER_137
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Detail
Atribut | Nilai |
---|---|
Nama Produk | SQL Server |
ID Peristiwa | 137 |
Sumber Kejadian | MSSQLSERVER |
Komponen | SQLEngine |
Nama Simbolis | P_SCALAR_VAR_NOTFOUND |
Teks Pesan | Harus mendeklarasikan variabel skalar "%.*ls". |
Penjelasan
Kesalahan ini terjadi ketika variabel digunakan dalam skrip SQL tanpa terlebih dahulu mendeklarasikan variabel. Contoh berikut mengembalikan kesalahan 137 untuk pernyataan SET dan SELECT karena @mycol tidak dideklarasikan.
SET @mycol = 'ContactName';
SELECT @mycol;
Salah satu penyebab kesalahan ini yang lebih rumit termasuk penggunaan variabel yang dideklarasikan di luar pernyataan EXECUTE. Misalnya, variabel @mycol yang ditentukan dalam pernyataan SELECT bersifat lokal untuk pernyataan SELECT; sehingga berada di luar pernyataan EXECUTE.
USE AdventureWorks2022;
GO
DECLARE @mycol nvarchar(20);
SET @mycol = 'Name';
EXECUTE ('SELECT @mycol FROM Production.Product;');
Tindakan Pengguna
Verifikasi bahwa variabel apa pun yang digunakan dalam skrip SQL dideklarasikan sebelum digunakan di tempat lain dalam skrip.
Tulis ulang skrip sehingga tidak mereferensikan variabel dalam pernyataan EXECUTE yang dideklarasikan di luarnya. Contohnya:
USE AdventureWorks2022;
GO
DECLARE @mycol nvarchar(20) ;
SET @mycol = 'Name';
EXECUTE ('SELECT ' + @mycol + ' FROM Production.Product;') ;
Lihat Juga
EXECUTE (Transact-SQL)
Pernyataan SET (Transact-SQL)
DECLARE @local_variable (Transact-SQL)