0

次の SQL ストアド プロシージャがありますが、c# コードは次のメッセージで例外をキャッチします。

Conversion failed when converting the nvarchar value to data type int

SQL ストアド プロシージャ

@byTestType int
AS
DECLARE @qry nvarchar(3000)
IF @byTestType = 4
BEGIN
    SET @qry = 'SELECT * FROM aTbl ORDER BY aCol'
END
ELSE
BEGIN
    SET @qry = 'SELECT * FROM aTbl WHERE aCol= '
    SET @qry = @qry +''''+CAST(@byTestType as varchar(3))+''''
END

EXEC sp_executesql @qry

aCol データ型は varchar(3)

何が問題なのかわからない!

4

1 に答える 1

0

私はいくつかの調査を行い、あなたのデモを少し修正しました

DECLARE @byTestType int = 1200

DECLARE @qry nvarchar(3000)

IF @byTestType = 4
BEGIN
    SET @qry = 'SELECT * FROM aTbl ORDER BY aCol'
END
ELSE
BEGIN
    SET @qry = 'SELECT * FROM aTbl WHERE aCol= '
    SET @qry = @qry +''''+CAST(@byTestType as varchar(3))+''''
END

print @qry

面白いことに、出力は次のようになります。

SELECT * FROM aTbl WHERE aCol= '*'

行を変更してください

 SET @qry = @qry +''''+CAST(@byTestType as nvarchar)+''''

また、次の状況に注意してください

DECLARE @byTestType int = NULL

この場合、@qry は NULL になります

于 2013-11-06T10:46:43.383 に答える