【PLSQL】過程procedure的形參和實參,plsqlprocedure

來源:互聯網
上載者:User

【PLSQL】過程procedure的形參和實參,plsqlprocedure
************************************************************************  ****原文:blog.csdn.net/clark_xu 徐長亮的專欄************************************************************************1.1 過程procedure

文法:    

         create or replace procedure proc_name

[(arg_name{in | out | in out} type, …)

]

{is | as }

          <local variable declareation>

         begin

                   <executable statements>

         exception

                   <exception handlers>

         end;

        

建立預存程序例子:

         create or replace procedure account_number

         ls

          v_cnt binary_interger;

         begin

          select count(id) into v_cnt from account;

          dbms_output.put_line(‘account number is’ || v_cnt);

         end;

1.1.1  調用預存程序

在sql工作表中直接調用:

         exec account_number;

1.1.2  預存程序的參數

例如:

         create or replace procedure proc1

         (p_c1 varchar2,p_c2 out varchar2,p_c3 in out varchar2)

         ls

          v_c1 varchar(10);

         begin

      --p_c1 :=p_c1 || ‘d’; --不能做複製的目標

                   v_c1:=P_c1;

                   p_c2 :=p_c1 || ‘d’;

                   p_c3”=p_c3||’d’;

         end;

調用為:

         exec  proc1 (‘abc’,’abc’,’abc’);儲存

調用:

         declare

                   v_c2 varchar2(10) :=’abc’

                   v_c33 varchar2(20) :=’abc’;

         begin

                   proc1(‘abc’,v_c2,v_c3);

                   dbms_output.put_line(v_c2);

                   dbms_outpurt.put_line(v_c3);

         end;

        

1.1.3  形參和實參

建立預存程序中的參數為形參:

         create or replace procedure proc1

         (p_c1 varchar2,p_c2 out varchar2,p_c3 in out varchar2)

         ls

          v_c1 varchar(10);

         v_c1為過程中的局部變數

調用時候括弧內的參數為實參

         proc1(‘abc’,v_c2,v_c3);

形參的種類:

         in: 預設模式,在過程的內部形參是唯讀;

         out;過程內部,形參可以讀可以寫入;調用過程中,任何的實參將被忽略,即值不會賦給形參;過程執行完成後,當前值賦給對應的實參;

         in out:調用過程中,實參的值賦給對應的形參,過程內部,可以讀,可以寫;過程執行結束後,控制返回給控制環境,形參記憶體賦給調用時候的實參;

對實參的要求:

         模式為In的形參對應的實參,可以是常量和變數

         某省為IN out或OUT的形參對應的實際參數必須是變數;用於儲存返回的值;

形參的限制:

形參不能聲明長度,但是可以使用%TYPE來進行限制

3.1.4 帶參數的程序呼叫

位置標記法:

         --調用的添加所有參數,實參和形參按照順序一一對應

名字標記法:

         --調用時給出形參名字,並給出實參,例如

         procname(12,p_outparm +> v_var1,p_inout =) 10);

兩種方法可以混合用:

         混用的時候,第一個參數必須按照位置類指定;

         當參數很多的時候,提供者可讀性,用名字標記法;

3.1.5使用預設參數

形參可以指明預設值

         parm_name [mode] type {:=|default} int_value;

位置指示法是,所有預設的值都放在最後面;

聲明時,如果有預設值,盡量將預設值放在參數表的末尾;

3.1.6 預存程序的DDL語句

在過程中執行DDL操作,所需的許可權必須通過直接授予的方式,不能通過角色授予;

調用過程時候,所有角色都是disable的,即角色所包含的所有許可權都不能生效;

調用其他使用者的過程,必須有過程的屬主賦予執行許可權

         grant execut on procname to userame;

         create procedure proc1

         ls

         begin

          execute immediate ‘create table test100(c1 number)’;

end;

************************************************************************  ****原文:blog.csdn.net/clark_xu 徐長亮的專欄************************************************************************

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.