• 【PLSQL】过程procedure形参和参数


    ************************************************************************
      ****原文: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 outOUT的形參相应的实际參数必须是变量;用于存储返回的值;

    形參的限制:

    形參不能声明长度。可是能够使用%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 徐长亮柱
    ************************************************************************
  • 相关阅读:
    ajax入门之建立XHR对象 (1)
    JavaScript中的函数有什么特点? 应该怎样优化?
    什么是JavaScript中的面向对象? 与其他编程语言的面向对象有什么区别? 什么是原型?
    Web页面加载,如何分析页面性能?如何进行优化?
    一个页面从输入 URL 到页面加载完的过程中都发生了什么事情?
    关于清除浮动与闭合浮动
    如何更加安全快速的使用富文本编辑器
    用Python实现一个爬取XX大学电费通知的小脚本
    在Sublime Text3上面更加方便愉快的写php
    如何搭建一个WAMP环境
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4601813.html
Copyright © 2020-2023  润新知