9

重複の可能性:
nvarchar 値 'Internet Explorer 3 original' をデータ型 int に変換するときに変換に失敗しました

そこで、次の単純なストアド プロシージャを作成しました。

CREATE PROCEDURE test
AS
BEGIN
    RETURN 'works!'
END
GO

次に、次のステートメントを実行して実行したいと思いました。

EXEC test

次のエラーが常に発生するのはなぜですか?

varchar 値の変換時に変換に失敗しました 'works!' データ型 int に。

ところで、(いつ) ストアド プロシージャの最後に GO ステートメントが必要ですか? @out 文字列を返すときにプロシージャから飛び出すため、ここでは効果がないと思います。

4

1 に答える 1

22

RETURNを使用すると、INTEGER コードのみを返すことができます

値を選択する必要があります

   CREATE PROCEDURE test
   AS
   BEGIN
       SELECT 'works!'
   END

または、呼び出し元の変数に代入する場合は、OUTPUT パラメーターを使用します

CREATE PROCEDURE test
    @outputVal VARCHAR(20) OUTPUT
AS
BEGIN
    SET @outputVal = 'works!'
END

DECLARE @val VARCHAR(20)
EXECUTE test @val OUTPUT
于 2012-11-30T16:38:57.717 に答える