Sql server 如果SQL存储过程正常运行,如何让SAS返回值?
我想用pass-thru重新运行一个存储过程。如果它运行正常或失败,如何让它返回值 现在,我的代码不返回任何内容,不管存储的代码是否正常运行且没有错误Sql server 如果SQL存储过程正常运行,如何让SAS返回值?,sql-server,sas,Sql Server,Sas,我想用pass-thru重新运行一个存储过程。如果它运行正常或失败,如何让它返回值 现在,我的代码不返回任何内容,不管存储的代码是否正常运行且没有错误 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.;
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;
运行 您可以在存储过程中使用带有
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
MSDN关于存储过程返回代码的文章:如果您正确地返回了某些内容(如@mallan1121所述),那么您应该能够用更少的代码来完成它,实际上:
create table blob as select * FROM CONNECTION TO odbc
(
exec dbo.DivByZero;
);
应将RC自动选择到blob
中
在SP运行后,您还可以查看&SQLXRC
和&SQLXMSG
宏变量(即使使用执行…
而不是从中选择);它们应该包含返回代码和任何返回的消息