You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用SQL Server存储过程返回值始终为0的问题排查

解决思路
  • 区分存储过程的返回码与实际返回值
    你当前用EXEC @DocID = 存储过程获取的是SQL存储过程的返回码(由RETURN语句返回,默认成功执行返回0),但VB中拿到的DocID大概率是存储过程通过输出参数或结果集返回的,而非返回码。

  • 针对输出参数的处理方式
    如果存储过程是通过输出参数返回DocID,需要显式声明对应变量并标记为输出参数传入,示例代码:

DECLARE @TargetDocID INT
-- 替换为实际参数列表,确保@DocID参数带OUTPUT关键字
EXEC PADS2.dbo.Document_Add @SystemCode='你的系统码', @DocID=@TargetDocID OUTPUT
SELECT @TargetDocID AS 获取到的DocID

可通过sp_helptext 'PADS2.dbo.Document_Add'查看存储过程定义,确认是否包含类似@DocID INT OUTPUT的参数声明。

  • 针对结果集的处理方式
    如果存储过程是通过SELECT语句返回DocID结果集,需要用临时表或表变量捕获结果,示例代码:
DECLARE @TempDoc TABLE (DocID INT)
-- 传入正确参数执行存储过程,将结果集插入临时表
INSERT INTO @TempDoc
EXEC PADS2.dbo.Document_Add @SystemCode='你的系统码'
-- 从临时表中取出DocID
SELECT DocID FROM @TempDoc
  • 核对参数一致性
    确保SQL调用时传入的所有参数(如@SystemCode等)的数据类型、取值、参数顺序和VB代码中完全一致,避免因参数不匹配导致存储过程执行分支异常,返回默认的0。

内容的提问来源于stack exchange,提问作者MartMX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 14:05:33