存储过程返回表

来源:百度知道 编辑:UC知道 时间:2024/06/01 16:28:40
用存储过程返回表,我用return可是他不让一次select多个字段,并出现问题:当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。那怎么返回表呀
/*********************************************************************************
*过程名称 : uspGetArriveCitys
*功能描述 : 查询所有城市
*输入参数 :

*输出参数 :

*返 回 值 :
DATASET
*作 者 : S39
*创建日期 : 2008-12-5
***********************************************************************************/
create PROCEDURE [dbo].[uspGetArriveCitys]

AS
BEGIN
BEGIN TRY
return
(
select PKID,City
from Basic_CityInfor
)

END TRY
BEGIN CATCH
RETURN ERROR_NUMBER()
END CATCH

END

到底怎么返回dataset呀?是不是题目错了?谁能给个例子呀?

通过调用存储过程不但能返回值,还能返回一张表,下面的代码中实现了创建一个临时表,并返回这个表(支持多个)的用法。希望对大家有帮助,
Examda提示: 这里还涉及到一个临时表的创建,什么是sql server真正的临时表,并发不冲突的临时表,要让系统建立在tempdb中才是,sql server会自动管理这些临时表
c#代码如下
DataSet ds = new DataSet();
System.Data.OleDb.OleDbCommand cmd = m_TdlyDataAccess.DBConnection.CreateCommand();
cmd.CommandText = "prcTest";
cmd.CommandType = CommandType.StoredProcedure;
System.Data.OleDb.OleDbDataAdapter dap = new System.Data.OleDb.OleDbDataAdapter(cmd);
dap.Fill(ds);
存储过程如下
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[prcTest]
AS
begin
CREATE TABLE #t(x INT PRIMARY KEY,y int default 0,z int default 0)
INSERT INTO #t VALUES (99,0,0)
INSERT INTO #t VALUES (239,0,0)
INSERT INTO #t VALUES (939,0,0)
select * from #t
drop table #t
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON