`

orcale存储过程简介

    博客分类:
  • Sql
 
阅读更多

存储过程
00、查看存储过程

00、删除存储过程
    drop procedure proc_name;
00、重新编译存储过程
    alert procdure proc_name compile
00、给用户赋予执行权限
    grant execute on proc_name to userName
00、调用存储过程
    方法1:execute 模式名.proc_name
    方法2:
        begin
            模式名.proc_name
        end
00、声明变量
    declare
    var1 number(2);                -- 仅声明 
    var2 char(2) := '11';          -- 在声明的同时初始化
    1、在定义变量名字的时候,一定要注意变量名字不可以是关键字
    2、创建存储过程的时候,参数的数据类型不可以指定精确数据类型。例如,只能使用number、varchar2,而不可以使用varchar2(4)
00、oracle语法
    1、if
        1、
            IF ... THEN
                ...;
            END IF;
        2、
            IF... THEN
                ...;
            ELSE
                ...;
            END IF;
        3、
            IF...THEN
                ...;
            ELSEIF...THEN
                ...;
            ELSE
                ...;
            END IF;
    2、case
        CASE
            WHEN...THEN...;
            ELSE ...;
        END CASE;
    case语句如果作为分支控制语句,最后结束语句是end case,如果是作为select语句里的控制语句则只需要end
    3、for循环
        1、
            FOR ... IN ...
            LOOP
                ...;
            END LOOP;
        2、中止sp
            for currow in ( 
                            select t.col1, t.col2 
                            from tableName t 
                            where ... 
                            )
            loop 
                if currow.col1 = 0 then 
                    return;    -- 中止sp,返回 
                end if; 
            end loop;
    5、while循环
        1、
            WHILE ...
            LOOP
                IF ... THEN exit;-- 中止sp,返回 
                END IF;
            END LOOP;
        2、
            declare
            isok := 9; 
            while isok >= 0
            loop 
                isok := isok - 1;        
                if isok = 8 then 
                    continue;                -- 与编程语言的 continue 语义一样,跳过当前循环的剩余语句,回到循环开始 
                end if;       
                if isok <= 0 then 
                    exit;                    -- 与编程语言的 break 语义一样,跳出循环 
                end if;   
                dbms_output.put_line('isok:' || isok); 
            end loop;
00、创建存储过程
    1、
        create procedure proc_GradeCount
        as
            gradeCount number(10);
        begin
            select count(*) into gradeCount from grade a;
            Dbms_Output.put_line(年级总数''||gradeCount);
        end;
    2、参数设置
        create or replace procedure sp_name ( 
        -- 入参、出参列表, 逗号分隔。 
        uid in varchar2,                          -- 不能带长度信息 
        startDate in date,                        -- 第二个输入参数 
        defaultVar in varchar2 default "",        -- 默认参数,如果不传,要注意参数的顺序 
        isok out number,                          -- 输出参数 
        result out varchar2                       -- 第二个输出参数 
        ) 
    参数的定义形式和作用如下:
    参数名 IN 数据类型 DEFAULT 值;
    定义一个输入参数变量,用于传递参数给存储过程。在调用存储过程时,主程序的实际参数可以是常量、有值变量或表达式等。DEFAULT 关键字为可选项,用来设定参数的默认值。如果在调用存储过程时不指明参数,则参数变量取默认值。在存储过程中,输入变量接收主程序传递的值,但不能对其进行赋值。
    参数名 OUT 数据类型;
    定义一个输出参数变量,用于从存储过程获取数据,即变量从存储过程中返回值给主程序。
    在调用存储过程时,主程序的实际参数只能是一个变量,而不能是常量或表达式。在存储过程中,参数变量只能被赋值而不能将其用于赋值,在存储过程中必须给输出变量至少赋值一次。
    参数名 IN OUT 数据类型 DEFAULT 值;
    定义一个输入、输出参数变量,兼有以上两者的功能。在调用存储过程时,主程序的实际参数只能是一个变量,而不能是常量或表达式。DEFAULT 关键字为可选项,用来设定参数的默认值。在存储过程中,变量接收主程序传递的值,同时可以参加赋值运算,也可以对其进行赋值。在存储过程中必须给变量至少赋值一次。
    如果省略IN、OUT或IN OUT,则默认模式是IN。
00、
总结:
1、在定义变量名字的时候,一定要注意变量名字不可以是关键字
2、创建存储过程的时候,参数的数据类型不可以指定精确数据类型。例如,只能使用number、varchar2,而不可以使用varchar2(4)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics