在SQL Server中,我有一个现有的Document_Add
存储过程,它可以正常工作并返回一个正确的DocID
值(在Visual Studio vb代码中),而且不能更改。在SQL中调用它时如下:
EXEC @DocID = PADS2.dbo.Document_Add @SystemCode...
这会执行存储程序,但@DocID
永远是0(不论是宣告为INT
或varchar
)。@DocID
应为2594631或类似值。
有什么想法吗?
在SQL Server中,我有一个现有的Document_Add
存储过程,它可以正常工作并返回一个正确的DocID
值(在Visual Studio vb代码中),而且不能更改。在SQL中调用它时如下:
EXEC @DocID = PADS2.dbo.Document_Add @SystemCode...
这会执行存储程序,但@DocID
永远是0(不论是宣告为INT
或varchar
)。@DocID
应为2594631或类似值。
有什么想法吗?
2条答案
按热度按时间fcg9iug31#
我总是说RTFM -阅读微软提供的精美手册。
https://learn.microsoft.com/en-us/sql/t-sql/statements/create-procedure-transact-sql?view=sql-server-ver16
请记住,输入和输出参数是标量,而不是表。
如果您确实需要输入一个表,请参阅示例G。
如果在过程中执行两个SELECT语句,则将具有MARS(多个活动结果集).
默认情况下,过程返回的值为零。它通常用于指示过程是否成功。您可以编写非零值来指示错误。
一定要阅读文档!
sdnqo3pr2#
【如果这里不是跟进的地方,请告知。】
贷记至rjs123431:
SQL SP的结尾如下:
在vb中返回字符串“2680914”:
但从SQL调用时返回0,如下所示:
在使用如下所示的临时表时,将返回正确的DocID(2680914):