0

我想在 SQL Server 中执行数据类型。你知道我要做什么吗?

USE [MO]
GO

DECLARE @return_value int

EXEC    @return_value = [dbo].[SBC]
        @UserId = 1,

SELECT  'Return Value' = @return_value
GO

返回值:

Name  ID
----------
Adam  1
Jhon  2

例如IDintbigint?我只能执行现有的程序,这是一个问题。

4

1 回答 1

0

该“返回值”是一个执行状态指示器,并且是一个整数。它并不意味着传回数据。标准值为 0 表示成功,1 表示失败,但您可以在 SP 中传回任何整数以反映许多不同的状态。

从 SQL Server 帮助文件:

@return_status 是一个可选的整数变量,用于存储模块的返回状态。此变量必须在批处理、存储过程或函数中声明,然后才能在 EXECUTE 语句中使用。

当用于调用标量值用户定义函数时,@return_status 变量可以是任何标量数据类型。

如果您想传回不同的数据类型(并且能够查询这些数据的“类型”),请使用“输出参数”。输出参数可以是任何数据类型,一旦 SP 存在,您可以查询 sys.parameters 系统表,传入您的 SP 的 object_id(或仅加入 sys.procedures 上的 object_id 和过滤过程名称),加入 sys .parameters 到 sys.types(在 user_type_id 上)获取每个参数的 sql 数据类型名称,包括输出参数

例如

DECLARE @Param3 bigint
exec dbo.MySPName @Param1, @Param2, @Param3 output
SELECT @Param3 --gives you output value

--This will give you the names and data types of all output parameters in this SP
SELECT p.name, t.name as [type], p.max_length, is_output 
FROM sys.parameters p 
JOIN sys.types t ON p.user_type_id = t.user_type_id 
WHERE p.object_id = OBJECT_ID(N'MySPName') 
AND p.is_output = 1

对于标量值函数,对参数和类型表的相同查询将返回一个无名参数(p.name 是一个空字符串/空白) - 这表示 UDF 的返回值,包括数据类型。但是存储过程只能有“返回状态”整数。

于 2013-02-14T15:06:17.383 回答