Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
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
JALANKAN (Transact-SQL)
Pernyataan SET (Transact-SQL)
DECLARE @local_variable (Transact-SQL)