SQL2005 在存储过程中怎么返回 select * from test 查询出来的结果

来源:百度知道 编辑:UC知道 时间:2024/07/02 03:54:19
我只会返回单个的数据,就像下面这样
if exists ( select * from sys.objects where name='usp_SelectTestPaperIDBayTestPaperName')
drop proc usp_SelectTestPaperIDBayTestPaperName
go--如果存储过程存在删除
create proc usp_SelectTestPaperIDBayTestPaperName
@que_Id int output,--输出目标name的ID
@que_Name varchar(400)--目标name
as
select @que_Id=QueId from test where QueName=@que_Name
go--创建存储过程

下面 ??? 处应该怎么写?如果这样写不对请帮忙写出正确的,谢谢
if exists ( select * from sys.objects where name='usp_SelectTestPaperAll')
drop proc usp_SelectTestPaperAll
go--如果存储过程存在删除
create proc usp_SelectTestPaperAll
@que_Info_All ??? output
as
???
go--创建存储过程
上面那个正确的代码也是我写的。
我是要把
select * from test
出来的结果全部通过存储过程返回
也就是把上面正确的改改然后让他返回“select * from test”出来的结果集
然后我在用DataSet对象去接。
要返回,那就要有返回值,返回值类型,以及查询结束后给返回变量赋值的过程
返回变量应该用什么类型的(第一组问好)? 如何赋值(第二组问好)?
这两个问题老师没教过。
只好到这里来找老师了。
我再提高20分

明白了,但

第一个“???”的意思是表示,你返回字段的类型,这要根据你第二步操作中复制的字段类型来看,假如你给它赋值的是字符串,则要使用varchar(50),这是变长字符串,长度自己定。

第二个“???”就是你写存储过程的目的了,你想找到什么数据,例如:
select @que_Id=QueId from test where QueName=@que_Name
的目的就是,将test表中QueName等于@que_Name(你传递进来的参数的值)的QueId找出来,并赋值给@que_Id,这样通过你前面定义过得output,你在程序就可以拿到这个存储过程的输出了。

总之,写一个过程,你要明白,你需要的条件、你的处理步骤、你想得到的结果,弄明白这个,剩余的就只是语法问题了。
--------------------------
如果你只要结果集的话,第一个上面别定义输入、输出参数。
第二个地方也别用,整个里面只写一个select * from test即可。

不太明白你的具体目的是什么
返回结果集的话,直接select * from test就可以了,用dataset取就行了

如果是要返回个表变量可以用
create proc usp_SelectTestPaperAll
@que_Info_All table(QueId int,QueName varchar(50)) output
as
begin
Insert into @que_Info_All
select QueId,QueName from test
end
go

select * from table 查出来的就是结果集咯,返回结果集的话可以这么写:

select 'ID','NAME','SEX' --这行是你指定的字段的名字
select id , name , sex from table --这行是表中字段的名字

试试吧,有问题在找我

问题不