如何在plsql中执行查询存储过程

huhanlinhhl 2011-04-21 09:22:38
存过过程如下
create or replace procedure TESTTABLE_Select(v_CX out SYS_REFCURSOR )
as
begin
OPEN v_CX FOR select * from TESTTABEL;
end TESTTABLE_Select;

这样执行看不到结果撒
declare V_CX SYS_REFCURSOR;
begin
TESTTABLE_Select(V_CX);
end;
...全文
2442 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我原先跟楼主一样的问题,今天终于得到答案了,谢谢
huhanlinhhl 2011-04-21
  • 打赏
  • 举报
回复
谢谢了 终于找到了
kingtiy 2011-04-21
  • 打赏
  • 举报
回复
PLSQL Developer 可以点测试,输入执行后,会有个输出的游标,你点开那个游标就可以看到结果集了.
huhanlinhhl 2011-04-21
  • 打赏
  • 举报
回复
程序块?
luoyoumou 2011-04-21
  • 打赏
  • 举报
回复
-- 如果是sqldeveloper工具的话,只能用程序块去测试啦!
huhanlinhhl 2011-04-21
  • 打赏
  • 举报
回复
PLSQL Developer
luoyoumou 2011-04-21
  • 打赏
  • 举报
回复
-- 你是用的什么工具?要用SQL*Plus工具!
-- 进入cmd,执行类似于下面的操作:
C:\Documents and Settings\Administrator>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 4月 21 10:18:45 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

idle> conn eygle/eygle
已连接。
eygle@SZTYORA> create or replace procedure emp_proc(emp_cur out sys_refcursor)
2 as
3 begin
4 open emp_cur for SELECT * FROM EMP;
5 end;
6 /

过程已创建。

eygle@SZTYORA>
eygle@SZTYORA> var v_emp refcursor;
eygle@SZTYORA> exec emp_proc(:v_emp);

PL/SQL 过程已成功完成。

eygle@SZTYORA> print v_emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO LOC
---------- -------------------- ------------------ ---------- ------------------- ---------- ---------- ---------- --------------------------
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30 CHICAGO
7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30 CHICAGO
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 400 30 CHICAGO
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30 CHICAGO

eygle@SZTYORA>

huhanlinhhl 2011-04-21
  • 打赏
  • 举报
回复
问题是这么简单的问题到现在也没个结果撒

一样无效无效sql语句
luoyoumou 2011-04-21
  • 打赏
  • 举报
回复
-- 就三句话的事情(定义游标变量,执行存储过程并赋值给游标变量、返回游标变量的数据)
var v_cx refcursor;
exec TESTTABLE_Select(:v_cx);
print v_cx;

-- 这么简单也不会,你还能做点什么呢?

  • 打赏
  • 举报
回复
var V_CX SYS_REFCURSOR;  --回车

exec TESTTABLE_Select(:V_CX); --回车

print V_CX;--回车
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 huhanlinhhl 的回复:]
无效sql语句。。。
存储过程应该没问题 我在C#程序里调用是有结果的
[/Quote]


var V_CX SYS_REFCURSOR; --回车

TESTTABLE_Select(:V_CX); --回车

print V_CX;--回车
huhanlinhhl 2011-04-21
  • 打赏
  • 举报
回复
无效sql语句。。。
存储过程应该没问题 我在C#程序里调用是有结果的
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 huhanlinhhl 的回复:]
declare V_CX SYS_REFCURSOR;
begin
TESTTABLE_Select(V_CX);
print V_CX;
end;

报错 符号:=被替换为V_CX后继续
[/Quote]

var V_CX SYS_REFCURSOR;
TESTTABLE_Select(:V_CX);
/
print V_CX;
huhanlinhhl 2011-04-21
  • 打赏
  • 举报
回复
declare V_CX SYS_REFCURSOR;
begin
TESTTABLE_Select(V_CX);
print V_CX;
end;

报错 符号:=被替换为V_CX后继续
luoyoumou 2011-04-21
  • 打赏
  • 举报
回复
sys@SZTYORA> conn eygle/eygle
已连接。
eygle@SZTYORA> desc emp;
名称 是否为空? 类型
----------------------------------------------------------------------------------------- -------- ------------------------------------------------------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NOT NULL NUMBER(2)
LOC NOT NULL VARCHAR2(13)

eygle@SZTYORA> create or replace procedure emp_proc(emp_cur out sys_refcursor)
2 as
3 begin
4 open emp_cur for 'SELECT * FROM EMP ';
5 end;
6 /

过程已创建。

eygle@SZTYORA> var emp_cur refcursor;
eygle@SZTYORA> exec emp_proc(:emp_cur);

PL/SQL 过程已成功完成。

eygle@SZTYORA> print emp_cur;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO LOC
---------- -------------------- ------------------ ---------- ------------------- ---------- ---------- ---------- --------------------------
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30 CHICAGO
7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30 CHICAGO
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 400 30 CHICAGO
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30 CHICAGO

eygle@SZTYORA> select * from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO LOC
---------- -------------------- ------------------ ---------- ------------------- ---------- ---------- ---------- --------------------------
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30 CHICAGO
7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30 CHICAGO
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 400 30 CHICAGO
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30 CHICAGO
huhanlinhhl 2011-04-21
  • 打赏
  • 举报
回复
1L 不对撒
luoyoumou 2011-04-21
  • 打赏
  • 举报
回复
print V_CX;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧