程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> oracle語句-sql語句查詢存儲過程的內容

oracle語句-sql語句查詢存儲過程的內容

編輯:編程綜合問答
sql語句查詢存儲過程的內容

我是用的oracle數據庫 在pl/sql中使用select text from user_source where name='pro_emp';語句查找存儲過程的內容結果查出來是空的,換了DBA角色也不行,最後我把text換成*,卻查出來了,郁悶。。。。。求解
還有一個問題:我創建的包和包體在右邊的packages的文件樹形結構下的圖標上面都有一個紅色的叉號,編譯的時候沒有錯誤調用包,提示創建的包無效。。。這是哪裡錯了?
--包
create or replace package my_pkg is
pragma serially_reusable;
v_sqlcode number;
v_sqlerrm varchar2(2048);
function add_dept(v_deptno number,v_dname varchar2,v_loc varchar2)return number;
function cntdept(v_deptno varchar2);
procedure read_dept;
end my_pkg;

--包體
create or replace package body my_pkg
is
pragma serially_reusable;
v_flag number;
cursor c_mvcursor is select * from dept;
mvcursor c_mvcursor%rowtype;
function cntdeptno(v_deptno dept.deptno%type)
is
begin
select count(*) into v_flag from dept where deptno=v_deptno;
if v_flag>0 then
v_flag:=1;
else
v_flag:=0;
end if;
return v_flag;
end cntdeptno;
function add_dept(v_deptno number,v_dname,varchar2(10),v_loc varchar2(20))
is
begin
if cntdeptno(v_deptno)=0 then
insert into dept values(v_deptno.v_dname,v_loc);
return 1;
else
return 0;
end if;
exception
when others then
v_sqlcode := sqlcode;
v_sqlerrm := sqlerrm;
return -1;
end add_dept;
procedure read_dept
is
begin
for c_mvcursor in mvcursor loop
v_deptno := c_mvcursor.deptno;
v_dname := c_mvcursor.dname;
dbms_output.put_line(v_deptno||' '||v_dname);

end loop;
end read_dept;
end my_pkg;
--調用包
declare
adddept number;
begin
adddept := my_pkg.add_dept(50,'dept1','loc1');
end;

最佳回答:


1、select text from user_source where name='pro_emp' 和 select * 應該都是可以的,不過你得注意一下'pro_emp'的大小寫的問題,在數據庫裡面可能是默認大寫存的。
2、你的function cntdept(v_deptno varchar2);函數,在包體裡面是不是錯了?function cntdeptno(v_deptno dept.deptno%type)??

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved