我正在使用SQL Server 2008。 我需要能够通过存储过程参数传递表输出。
示例:MyTable(col1,col2)具有以下数据:
1, 'A'
2, 'B'
3, 'C'
存储过程:
sp_read_tbl (@p1_col1 int OUT,
@p1_col2 char(1) OUT,
@p2_col1 int OUT,
@p2_col2 char(1) OUT,
@p3_col1 int OUT,
@p3_col2 char(1) OUT)
如何在存储过程中执行此操作?
答案 0 :(得分:1)
如上所述,这不是通常的方式从存储过程中的表中获取数据。如果你的表得到第四行,你将不仅要重做存储过程,还要重新调用它的代码。
但如果你真的需要这样做,你可以。有很多方法;我的看起来像这样:
-- DO NOT start your stored procs with "sp_". That's reserved for MS.
-- Many people use "up_" as a substitute.
create procedure dbo.up_read_tbl
(
@p1_col1 int OUT,
@p1_col2 char(1) OUT,
@p2_col1 int OUT,
@p2_col2 char(1) OUT,
@p3_col1 int OUT,
@p3_col2 char(1) OUT
)
AS
SELECT top 1
@p1_col1 = col1
, @p1_col2 = col2
FROM dbo.MyTable
SELECT top 1
@p2_col1 = col1
, @p2_col2 = col2
FROM dbo.MyTable
WHERE col1 <> @p1_col1
SELECT top 1
@p3_col1 = col1
, @p3_col2 = col2
FROM dbo.MyTable
WHERE col1 <> @p1_col1
AND col1 <> @p2_col1