示例:
CREATE PROCEDURE dbo.sp_Delete (@p1 INT, @p2 VARCHAR(10) OUTPUT)
AS
--@p1 will have calculations done and get a value for @p2
SET @p2 = 'test'
RETURN @p2
测试:
DECLARE @p2 VARCHAR(100)
EXEC sp_Delete
@p1 = N'1',
@p2 = N''
错误:
Conversion failed when converting the varchar value 'test' to data type int.
但是 你可以这样做:
ALTER PROCEDURE dbo.sp_Delete (@p1 INT)
AS
--@p1 will have calculations done and get a value for @p2
SELECT 'test'
EXEC sp_Delete
@p1 = N'1'
所以我的问题是,当你不能使用“return @myvar”(如果它是一个)时,拥有 varchar 类型的 OUTPUT 参数有什么用(注意我不是质疑 int 类型的输出参数) varchar。您只需“选择@myvar”即可。 我试图找出我做错了什么,因为我认为我不理解特定 varchar 输出变量的使用。
最佳答案
输出变量与返回值不同。返回值始终是整数。您可以像这样检索它:
exec @retval = dbo.MyStoredProcedure
当检索输出参数时,如下所示:
exec dbo.MyStoredProcedure @par_out output
在您的情况下,请省略 return
语句。 set @par_out = 'value'
足以将输出参数返回给调用代码。
关于sql-server - 存储过程中 varchar 输出参数的用途是什么 - 不能 'return @myvarchar' 但可以 'select @myvarchar',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14850596/