2017-09-21 16 views
0

INTの1つの入力を受け取る単純なストアドプロシージャがあります。このプロシージャは、1つの値(@KEY)をVARCHARとして宣言します。手続きのロジックは、@KEYの値を英数字の値に設定します。ストアドプロシージャを呼び出すときにvarchar値をデータ型intに変換するときに変換に失敗しました

ALTER PROCEDURE [dbo].[sp_Get_KEY] 

@member  Int 

AS 
BEGIN 

    SET NOCOUNT ON 

    DECLARE @KEY  VARCHAR(12) 

    SET @KEY = '' 

    IF Exists (Select * From Version Where NAME = 'WIN' AND MEMBER = @member) 
     Begin 
      Set @KEY = '95+' 
     End 

    RETURN @KEY 

END -- END OF PROCEDURE 

私が使用してプロシージャを呼び出すとき:

宣言@return_key VARCHAR(20) EXEC @return_key = dbo.sp_Get_KEY 2222

最後に、手順は@KEYの値を返します

次のエラーが表示されます。

varchar値'95 + E 'をデータ型intに変換すると、変換に失敗しました。

アイデア?

+0

そして、何:
戻り値は常に

ALTER PROCEDURE [dbo].[sp_Get_KEY] @member Int ,@KEY VARCHAR(12) OUTPUT AS BEGIN SET NOCOUNT ON --DECLARE @KEY VARCHAR(12) SET @KEY = '' IF Exists (Select * From Version Where NAME = 'WIN' AND MEMBER = @member) Begin Set @KEY = '95+' End RETURN 0; END 

例整数でなければなりませんか? –

+0

https://docs.microsoft.com/en-us/sql/relational-databases/stored-procedures/return-data-from-a-stored-procedure – Serg

答えて

0

outパラメータまたはresulsetを使用して任意のデータ型を返すことができます。あなただけの `execのdbo.sp_Get_KEY 2222`を使用する場合

declare @KEY VARCHAR(12); 
exec dbo.sp_Get_KEY 2222, @KEY OUTPUT; 
--SELECT @KEY; 
PRINT @KEY; 
+0

ありがとうございます。どのように私はこれをSQLから呼び出すのですか?出力パラメータを指定する際の構文は何ですか? – Sanxion

+0

回答を変更しました – Fabio

+0

ありがとうございますが、私はこのストアドプロシージャを他のストアドプロシージャ内から呼び出す際に、 'SELECT'ステートメントを避けようとしています。コード。 'SELECT'ステートメントを使用すると、複数のレコードセットが返され、コードが分割されます。 – Sanxion

関連する問題