Daha
Skaler değişkeni bildirmelidir
@RowFrom int
@RowTo int
her ikisi de Saklı Yordam için Global Giriş Parametreleridir ve SQL sorgusunu T-SQL ile Saklı Yordam içinde derlediğimden ve ardından sonucu göstermek için saklı yordamın sonunda Exec(@sqlstatement)
kullandığımdan, çalıştırılan @sqlstatement
değişkeninin içinde @RowFrom
veya @RowTo
kullanmaya çalıştığımda bana bu hatayı veriyor. aksi takdirde iyi çalışıyor. lütfen yardım edin.
"Must declare the scalar variable "@RowFrom"."
Ayrıca, @sqlstatement
değişkenine aşağıdakileri eklemeyi denedim:
'Declare @Rt int'
'SET @Rt = ' + @RowTo
ancak @RowTo
hala değerini @Rt
ye aktarmıyor ve bir hata üretiyor.
70
3
Bir int ile bir dizeyi birleştiremezsiniz. Bunun yerine:
İhtiyacın var:
Burada neler olduğunu açıklamaya yardımcı olmak için. Diyelim ki @RowTo = 5.
Bunu bir dizeye dönüştürmek için (sonuçta bir sayı olacak olsa bile) dönüştürmem gerekiyor. Ancak gördüğünüz gibi, sayı çalıştırıldığında hala bir sayı olarak ele alınıyor. Cevap 25, değil mi?
Sizin durumunuzda @sql dizesi içinde @Rt vb. ifadeleri yeniden beyan etmenize gerek yoktur, sadece şunu söylemeniz yeterlidir:
Yine de uygun parametrelendirmeye sahip olmak daha iyi olacaktır, örn.
Bilginize, bunun eski bir gönderi olduğunu biliyorum, ancak veritabanı COLLATION ayarlarına bağlı olarak aşağıdaki gibi bir ifadede bu hatayı alabilirsiniz,
örneğin S harfini yazım hatası yaparsanız
Burada zaten yayınlanmış olan yanıtları saptırdığım için özür dilerim, ancak bu bildirilen hatanın gerçek bir örneğidir.
Ayrıca hatanın mesajda büyük S harfini göstermeyeceğini de unutmayın, nedeninden emin değilim, ancak sanırım bunun nedeni
eşittir işaretinin solundadır.
Harf Hassasiyeti de bu soruna neden olacaktır.
SQL Server Man'de @MyVariable ve @myvariable aynı değişkenlerdir. Studio'da aynı değişkenlerdir ve çalışacaklardır. Ancak, bu değişkenler büyük/küçük harf duyarlılığı farklılıkları nedeniyle Visual Studio'da (C#) "@MyVariable" skaler değişkenini bildirmelidir.