9 Eylül 2009 Çarşamba

"Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'."

HATA MESAJI:
"Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'."

AÇIKLAMA:
sp_executesql sistem SP' si ile bir değişkendeki komutu çalıştırdığınızda bu hata mesajı ile karşılaşabilirsiniz.

Örnek:
DECLARE @komut VARCHAR(150)
SET @komut = 'SELECT * FROM TABLOM'

EXEC sp_executesql @komut

veya hiç değişken kullanmadan doğrudan aşağıdaki gibi bir komut çalıştırırsanız da aynı hata mesajıyla karşılaşırsınız:

EXEC sp_executesql 'SELECT * FROM TABLOM'

ÇÖZÜM:
Aslında hatanın nedeni, hata mesajının içerisinde de açıkça yazıyor. sp_executesql sistem SP' si için kullanacağınız @statement parametresi UNICODE olmalıdır. Bu @statement parametresi ister ilk örnekteki gibi bir değişken kullanılarak belirtilmiş olsun, isterse ikinci örnekteki gibi statik bir şekilde yazılmış olsun.

Yukarıdaki örneklerin doğruları ise şu şekildedir:
DECLARE @komut NVARCHAR(150)
SET @komut = N'SELECT * FROM TABLOM'

EXEC sp_executesql @komut

vve

EXEC sp_executesql N'SELECT * FROM TABLOM'

Hiç yorum yok: