2017-04-06 14 views
2

パススルーでストアドプロシージャを再実行したいですか?正しく実行された場合、または失敗した場合、値を返す方法を教えてください。SQLストアドプロシージャが正常に実行された場合、SASが値を返すようにするにはどうすればよいですか?

今、私のコードは、格納されたものがエラーなく実行されているかどうかにかかわらず何も返されません。

proc sql; 
connect to odbc(noprompt="Driver={DataDirect 6.1 SQL Server Wire Protocol};Host=99.999.999.99;Port=9999;Database=ReportServer02;Uid=&userid.;Pwd=&password.;"); 
    create table blob as select * FROM CONNECTION TO odbc 
    (declare @r int 
    exec dbo.DivByZero; 
    select @r as DivByZero;); 

disconnect from odbc; 

run;

答えて

0

RETURN()の戻りコードをストアドプロシージャ内で使用できます。例:

IF @divisor = 0 
BEGIN 
RETURN(1) --Error! 
END 

ELSE 
BEGIN 
--do some work 
RETURN(0) --Success! 
END 

次に、リターンコードを取得するだけです。

DECLARE @rc int 
EXEC @rc = dbo.DivByZero 
SELECT @rc 
SPROCリターンコードの

MSDNの記事:(@ mallan1121で説明するよう)あなたが正しく何かを返す場合は、あなたが実際に、より少ないコードでそれを行うことができるはずhttps://technet.microsoft.com/en-us/library/ms190778(v=sql.105).aspx

1

create table blob as select * FROM CONNECTION TO odbc 
    (
    exec dbo.DivByZero; 
    ); 

RCは自動的にblobに選択されます。

SPは(あなたがexecute ...代わりのselect fromを使用している場合でも)を実行した後にまた&SQLXRC&SQLXMSGマクロ変数を見ることができます。返されたコードと返されたメッセージが返されます。

関連する問題