示例:
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 时,拥有一个 varchar 类型的 OUTPUT 参数有什么用(注意我不是在质疑一个 int 类型的输出参数)。您可以只“选择@myvar”。我试图弄清楚我做错了什么,因为我认为我不了解特定 varchar 输出变量的使用。