【发布时间】:2021-02-21 12:43:19
【问题描述】:
我有一个 SQL Server 存储过程,它向 Access VBA 返回一个 varchar 值,但我从 Access 收到一个错误,说它无法将 varchar 值转换为 int。无论是过程还是在 VBA 中,都没有将返回值指定为整数。为了这篇文章,我已经简化了实际代码。以下不是完整代码。
存储过程:
create procedure proc
@CreateOrUpdate varchar(6) output
as
begin
select @CreateOrUpdate = 'Create'
return @CreateOrUpdate
end
在访问 VBA 中:
Dim Com As ADODB.Command
Set Com = New ADODB.Command
With Com
.ActiveConnection = Cnn (Set elsewhere - No problems with this)
.CommandType = adCmdStoredProc
.CommandText = "proc"
.Parameters.Append .CreateParameter("@CreateOrUpdate", adVarChar, adParamOutput, 6)
End With
结果: "将 varchar 值 'Create' 转换为数据类型 int 时转换失败。"
我还有其他返回值也是 varchar,语法相同,我对它们没有任何问题。任何帮助表示赞赏。
【问题讨论】:
-
“我还有其他返回值也是 varchar,语法相同,我对它们没有任何问题” 我对此表示怀疑,除非它们可以隐式转换为一个
int;然后你还有其他问题。 -
如果您有“其他也是 varchar 的返回值”,只有在它们始终可转换为整数时才会巧合地工作(包括
NULL值和空字符串/空格 - 这些将最终为 0)。如果它们在RETURN语句中使用,您绝对应该删除它们。不过,您可以有任意数量的VARCHAR输出参数。
标签: sql-server vba stored-procedures