oracle存儲過程中調用存儲過程
⑴ Oracle 存儲過程調用存儲過程
沒有看到定義REPORTEVERYDETAIL1
同時REPORTEVERYDETAILG 是存儲過程,不是函數
b:=REPORTEVERYDETAILG () 也有問題
你最好把這些存儲過程度放到一個包中建立
⑵ oracle中,一個存儲過程怎麼調用另一個存儲過程
在存儲過程A的begin,end之間你想要的位置,直接用存儲過程B就可以了啊…………
⑶ oracle 怎麼調用存儲過程
ORACLE存儲過程 以oracle自帶例子資料庫的表舉例
1、
create or replace procere p
is
  cursor c is
    select * from emp2 for update;
begin
  for v_emp in c loop
    if(v_emp.sal <2000) then
      update emp2  set sal =sal+1 where current of c ;
    elsif(v_emp.sal>=2000) then
      delete from emp2 where current of c;  
    end if;        
  end loop; 
  commit; 
end; 
創建了存儲過程不代表運行了存儲過程;
運行此存儲過程 :
方式一 exec p;
方式二
begin
 p;
end;
2、帶參數的存儲過程
  in  相當於程序里的參數,供傳入用,在存儲過程不能改變其值;
  out 相當於程序里的返回值,在存儲過程中可以為其賦值傳出;
  in out 既可以當參數又可以當返回值用;
  不帶上述說明符默認為in類型;
下例中v_a v_b 為in類型
      v_c     為out類型
      v_d     為in out 類型
create or replace procere  p(v_a in number,v_b number,v_c out number,v_d in out number)
is
begin
    if(v_a > v_b) then
      v_c := v_a;
    else
      v_c := v_b;
    end if;     
    v_d := v_d+1;
end; 
---> 調試時:
可以在命令窗口調試,出錯時 用show errors 顯示出錯信息;
可以在plDv中調試;
---> 運行時:
可以在命令窗口運行:
declare
  v_a number:=3;
  v_b number:=4;
  v_c number;
  v_d number:=5;
begin
  p(v_a,v_b,v_c,v_d);
  dbms_output.put_line(v_c);
  dbms_output.put_line(v_d); 
end;
可以在plDv中調試;
⑷ oracle中怎麼在存儲過程中調用同一個包的其他存儲過程
在存儲過程或函數里調用oracle包的話,首先要有執行這個包的許可權;如果包屬於其他的用戶(不是系統包),調用時:用戶名.包名.存儲過程(參數)名或者
變數:=用戶名.包名.函數(參數);因為函數有返回值,變數類型要跟函數返回值的類型一致。
在command
下調用的話:exec
用戶名.包名.存儲過程名(參數);select
用戶名.包名.函數名(參數)
from
al;就可以了。包屬於當期用戶可以不寫用戶名。
⑸ 在oracle中 存儲過程如何調用存儲過程
在存儲過程中直zd接使用就行了
--創建回一個存儲答過程
CREATE
OR
REPLACE
PROCEDURE
PR_NEW1
(N_NAME
VARCHAR2)
as
begin
DBMS_OUTPUT.PUT_LINE(N_NAME);
end
;
--在另一個存儲過程中調用
CREATE
OR
REPLACE
PROCEDURE
PR_NEW2
as
begin
PR_NEW1('NAME');
---
end
;
⑹ oracle存儲過程里調用存儲過程
存儲過程里直接新起一行寫b(c,d);就可以,不在存儲過程中單獨執行時要call b(c,d);
⑺ oracle 存儲過程中調用存儲過程
一個帶參數的存儲過程。
SQL> CREATE OR REPLACE PROCEDURE HelloWorld1 (
  2    p_user_name  VARCHAR2
  3  ) AS
  4  BEGIN
  5     dbms_output.put_line('Hello ' || p_user_name || '!');
  6  END HelloWorld1;
  7  /
Procere created.
SQL> CREATE OR REPLACE PROCEDURE CallHelloWorld1 (
  2    p_user  VARCHAR2
  3  ) AS
  4  BEGIN
  5    -- 調用存儲過程的 存儲過程
  6    HelloWorld1(p_user);
  7  END CallHelloWorld1;
  8  /
Procere created.
執行
SQL> set serveroutput on
SQL> exec CallHelloWorld1( 'Tom' );
Hello Tom!
PL/SQL procere successfully completed.
