sql中如何通过存储过程返回结果集

如果我在代码中调用存储过程,如何返回里面select语句的结果集呢
存储过程是如何执行的,如果存储过程里有n个select语句那么它返回的是那条select语句结果集

引用
4

oraclefans_
的回复:想麻烦了。。你直接返回游标就是一个结果集合。。CREATE
OR
REPLACE
PROCEDURE
USP_RETN_VAL(
RETN_VAL_CUR
OUT
sys_refcursor)ISBEGIN
OPEN
RETN_VAL_CUR
FOR
SELECT
*
FROM
TBL1;END;调用declare
cur
sys_refcurso……谢谢
但是我是想执行一个存储过程后,直接返回表里所有数据,不要再去操作游标。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-29
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["constring"]);
SqlCommand cmd1 = new SqlCommand("存储过程名", conn);
conn.Open();
cmd1.CommandType = CommandType.StoredProcedure;
cmd1.Parameters.Add("@roomid", SqlDbType.Int);
cmd1.Parameters["@roomid"].Value = id;
SqlDataReader sdr = cmd.ExecuteReader();

sdr就是读出来的数据。也就是写了什么类型的存储过程,就新建一个相同的类型来接收就行了。看得懂吗?看不懂发消息给我,再教你。本回答被提问者采纳
第2个回答  推荐于2017-10-01
1、 返回结果集

这是客户端应用程序返回结果的最通用的方法。结果集是通过使用SELECT语句选择数据产生的。结果集可以从永久表、临时表或局部变量中产生。将结果返回到另一个存储过程不是一种有效的方法。存储过程不能访问另一个存储过程建立的结果集。

例如从永久表中返回结果集:
USE pubs
GO
CREATE PROCEDURE ap_CreateResultFromPermtable
AS
SELECT au_iname FROM authors
例如从局部变量中创建结果集:

USE pubs
GO
CREATE PROCEDURE ap_CreateResultFromVariable
AS
DECLARE @au_iname char(20)
SELECT @au_iname = au_iname FROM authors
WHERE au_id = ‘172-32-1176’
SELECT @au_id
GO
第3个回答  2008-11-04
public string sql = ConfigurationManager.ConnectionStrings["sql"].ToString();

public int SelectClassIDByClassName(string ClassName)
{
int ClassID = 0;
SqlConnection con = new SqlConnection(sql);
con.Open();
SqlCommand cmd = new SqlCommand("usp_SelectClassIDByClassName", con);
cmd.CommandType = CommandType.StoredProcedure;//告诉命令字符串里面的是一个存储过程
cmd.Parameters.Add("@ClassName", SqlDbType.VarChar, 50).Value = ClassName;//输入参数的值是ClassName;
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
if (reader.Read())
{
ClassID =Convert.ToInt32(reader["ClassID"]);
}
return ClassID;
reader.Close();
con.Close();
}

调用的时候这样写

private void button2_Click(object sender, EventArgs e)
{

string ClassName = textBox1.Text;
int n = mn.GetClassIDByClassName(ClassName);
textBox2.Text = n.ToString();
}

就是调用方法
第4个回答  2008-11-04
其实是一样的,你可以找一个SQLHELP看看

sql 存储过程,返回数据集 并返回总行数
1、打开SQL Server Management Studio找到存储过程所在的数据库。在对象资源管理器详细信息中可以看到存储过程的文件夹。2、点击打开这个文件夹可以,在搜索中输入要搜索的存储过程名称。3、同样也可以在数据库目录结构处选择存储过程右键菜单中的筛选设置。4、在这里可以进行详细的条件筛选设置。将需要查看的...

sql存储过程怎么返回string类型的返回值?怎么返回多个值?
1.如果是返回一个值,可以在存储过程里增加参数进行返回,如:create proc aaa(@ReturnValue varchar(100) output)……你在存储过程里设置@ReturnValue的值就行了。VB里运行存储过程,然后访问ReturnValue参数就行了。2、如果是返回多列数据,就直接在存储过程里select表,VB里运行存储过程后,可以获取返回...

在sql select 语句中 如何获取 存储过程的返回值
SQL Server中存储过程的返回值不是通过return语句返回的(return语句是在用户自定义函数中使用的),而是通过存储过程的参数来返回,在定义存储过程的参数时使用关键字output来指定此参数是返回值。而在调用存储过程时,也必须使用关键字给接收返回值的变量,这样才能在调用时获得存储过程的返回值。示例:create ...

存储过程如何把一个结果集放在一张表里面并返回来
结果集有必要放在表里面返回来,直接返回游标就可以了,结果集也可以看作是张表的。DB2的的解决方案:1.声明存储过程的时候,在声明之后添加 RESULT SETS 1,表示返回一个结果集,示例如下:CREATE PROCEDURE YOUPRO(IN P_UserId INTEGER)LANGUAGE SQL RESULT SETS 1 --- -- SQL 存储过程(获取用户信...

sql server 存储过程如何返回一个集合啊?
对于@table_result, @后是自定义参数,不是返回值。存储过程执行完成后会自动返回集合的,因为你执行的是一条select语句,不用return。存储过程没有return语句

SQL 获取存储过程返回值
create proc usp_statistics a int output,b int output,c itn output as ...看倒定义后面的 output了吗?这样定义就能把值传出来。比如在查询分析器中, 定义了3个变量 a @b @c 然后执行存储过程 exec usp_statistics @a,@b,@c 这样@a @b @c的值就是执行存储过程后,传出来的值了 ...

帮忙写个oracle 存储过程,可以返回表的所有列的结果集
与SQL Server的存储过程和函数均可以返回结果集不同的是,PL\/SQL的存储过程和函数均不直接提供返回数据集的方法,但可以通过返回类型对象来实现返回数据集的效果。具体思路为:(1)创建包头,在其中声明类型和存储过程,类型应该引用游标;(2)创建包体,定义存储过程,执行查询,将查询得到的结果集以游标...

ORACLE 存储过程怎么返回临时表结果集
输出结果:1,1 PL\/SQL procedure successfully completed 你的那个ORA-01031: insufficient privileges,是权限不足的问题。SQL代码:CREATE GLOBAL TEMPORARY TABLE REPROTTEST(ID NUMBER,ANAME VARCHAR2(20)) ON COMMIT DELETE ROWS;create or replace procedure report_month_responsibility(o_cur out sys...

sql 存储过程中return的使用方法?
当在存储过程中使用 RETURN 语句时,此语句可以指定返回给调用应用程序、批处理或过程的整数值。如果 RETURN 未指定值,则存储过程返回 0。大多数存储过程按常规使用返回代码表示存储过程的成功或失败。没有发生错误时存储过程返回值 0。任何非零值表示有错误发生。调用存储过程的应用程序可以将返回代码所...

PGSQL存储过程,返回当前日期到年底的周六日日期
通过FOR循环对剩余天数进行迭代,判断每天是否为周六或周日。3. 判断日期是否为周六或周日 使用SQL的EXTRACT函数获取当前日期加上循环变量i后的DOW值,即周几,0为周日,6为周六。4. 拼接日期并返回结果 将符合条件的日期拼接成字符串,然后去除最后的逗号。5. 创建存储过程 使用CREATE OR REPLACE ...

相似回答