Bagikan melalui


MSSQLSERVER_137

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure 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)