① 存储过程中如何使用结果集
1、子查询
SELECT...
FROM ...
WHERE id IN (
SELECT id
FROM ...
WHERE ...
)
2、ID结果集存入临时表,再用此表进行操作
3、针对每个结果id作复杂逻辑操作的话,使用CURSOR
② 如何返回存储过程中所有结果集
返回结果集不用Output,直接Select出来的结果集就能返回
在应用程序或网页程序中用你调用存储过程的这个对象像普通记录集一个调用就好了
如果是在查询分析器中执行,可以在下面的“网格”中直接看到返回的这个结果集
③ 如何查询存储过程查询出来的结果
别建立 存储过程啊, 建立一个 表值函数 就行.
1> CREATE FUNCTION getHelloWorld()
2> RETURNS TABLE
3> AS
4> RETURN
5> SELECT 'Hello' AS A, 'World' AS B;
6> GO
1> SELECT * FROM getHelloWorld();
2> go
A B
----- -----
Hello World
(1 行受影响)
---
如果存储过程无法修改
那么需要查看 客户方 给出的 存储过程 的参数列表.
也就是 哪个参数是 IN 的, 哪个参数 是 OUT 的。
要 通过 调用存储过程的方式
拿到 OUT 参数对应的数据。
没法简单的 SELECT 了。
④ 如果存储过程返回多个结果集,怎么取结果
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
⑤ 在Mysql 存储过程中,查询出来的结果集,不用游标还可以怎么遍历
从存储过程返回表类型的值也有二种:
1.存储过程使用浮标参数,即同时指定CURSOR VARYING OUTPUT项.调用者可以使用while及fetch循环遍历该浮标.
2.直接将存储过程返回的结果集插入到表中,即使用insert into 表名 exec 存储过程.此种方式中注意存储过程返回的结果集列与insert的列要完全对应,可以在insert中指定列名来保证对应关系.
------------------------------------------------------------------------------测试:------------------------------------------------------------------------------
----建立测试用的临时表
create table #tmp (colx int,coly int)
insert into #tmp values(1,2)
insert into #tmp values(2,3)
insert into #tmp values(3,4)
select * from #tmpGO----创建返回游标的存储过程
create proc sp_c @cur CURSOR VARYING OUTPUTASbeginset @cur = CURSOR for select colx from #tmp
⑥ 如何查看存储过程执行的结果
你得前边变量里设置个输出变量,然后才能查询到输出的东西
譬如这个
set output on
DECLARE
TYPE mytable IS TABLE OF chengji%ROWTYPE;
cur_chengji sys_refcursor;
v_data mytable;
begin
open cur_chengji for
select xuehao, kemu, riqi, chengji from chengji;
FETCH cur_chengji BULK COLLECT INTO v_data;
close cur_chengji;
FOR i IN 1 .. v_data.COUNT
LOOP
DBMS_OUTPUT.put_line ( v_data (i).xuehao
|| ' was hired since '
|| v_data (i).riqi);
END LOOP;
end;
/
是在sqlplus里执行的
最后的DBMS_OUTPUT.put_line是输出的结果
你可以建个表chengji,包含字段xuehao, kemu, riqi, chengji
把上边结果运行一下,你就知道大概意思了
⑦ 如何查看SQL存储过程执行的结果集
打开SQL Server Management Studio找到存储过程所在的数据库。在对象资源管理器详细信息中可以看到存储过程的文件夹。
点击打开这个文件夹可以,在搜索中输入要搜索的存储过程名称。
同样也可以在数据库目录结构处选择存储过程右键菜单中的筛选设置。
在这里可以进行详细的条件筛选设置。将需要查看的存储过程搜索出来。
找到这个SQL存储过程之后,也可以右键点击菜单中的修改,进入SQL存储过程编辑。
查看SQL存储过程过程是否带有参数,因为要执行SQL存储过程时需要使用的参数。
知道SQL存储过程的参考类型和基本功能之后,就可以使用的EXEC 存储过程名+参数来执行SQL存储过程。
最后在下方查看SQL存储过程执行结果。
⑧ SQL存储过程中包含模糊查询,怎样将查询的结果全部显示出来
Select
@BookID=nBookID,@BookName=vBookName,@WriterName=vWriterName,
@Price=mBookPrice,@PublicTime=tPublicTime,@Press=vBookPress
这样只是赋值了,只能找到最后一条数据。
可以把赋值语句去掉,不返回这些值、
Select
nBookID,vBookName,vWriterName,
mBookPrice,tPublicTime,vBookPress
From
Books,
Writer
Where
Books.nWriterNo=Writer.nWriterNo
AND
Books.vBookName
LIKE
'%'+@InputBookName+'%'
AND
Writer.vWriterName
LIKE
'%'+@InputWriterName+'%'
⑨ sql server存储过程如何把查询全部结果并输出
sql server存储过程 输出结果集 还是比较简单的.
直接在 存储过程里面执行 SQL 语句就可以了。
例如:
1> CREATE PROCEDURE testProc
2> AS
3> BEGIN
4> SELECT 'Hello 1' AS A, 'World 1' AS B UNION ALL
5> SELECT 'Hello 2' AS A, 'World 2' AS B;
6> END
7>
8> go
1> execute testProc
2> go
A B
------- -------
Hello 1 World 1
Hello 2 World 2
(2 行受影响)
⑩ delphi7如何获取存储过程中的结果
delphi专门有一个存储过程控件,里面定义了存储过程的参数
如果是OUTPUT类型的,就可以得到远端SQL执行结果。
如果你得到的是个多条多列记录,那直接用QUERY就可以。