存储过程基本语法

  存储过程就是一条或多条SQL语句的集合,可视为批文件,但作用不仅限于批处理,本文介绍如何创建存储过程以及变量的使用,如何调用、查看等。

创建语法如下:

          create procedure sp_name([proc_parameter]) (characteristics ...)  routine_body

pro_parameter:参数列表,

列表形式:[in|out|inout]  param_name  type

characteristics:存储过程的特性,有以下取值

        language sql:说明toutine_body部分是由sql组成;

        [not] deterministic:指明相同的输入是否会得到相同的输出,deterministic表示结果确定,not deterministic表示不确定,默认为not deterministic;

        {contains sql | not sql | reads sql data | modifies sql data}:指明子程序使用sql的限制,其中contains sql指不包含读写数据的sql语句;not sql表示不包含sql语句;reads sql data说明子程序包含读数据的语句;modifies sql data表明子程序包含写数据的语句。默认contains sql。

        sql security {definer | invoker}:指明谁有权限来执行,definer表示只有定义者才能执行,invoker 表示拥有权限的调用者可以执行,默认情况下为definer。

        comment  ‘String‘:注释信息,可以用来描述存储过程。

routine_body:sql代码内容,用Begin ...  End来表示sql代码的开始和结束。

举个简单的应用例子,有表为fruits存有单价、名称等,创建存储过程返回所有水果的评均价格,代码如下:

        create procedure AvgFruitPrice(out param1 int)

        Begin

           select avg(f_price) into param1 from fruits;

          End;

变量的使用

    1.定义变量,语法如下:

        Delare var_name [,var_name] ... date_type[DEFAULT value];

        var_name是局部变量名称,DEFAULT value子句为变量提供初始值。

    2.为变量赋值,语法格式如下:

        Set var_name = expr1[,var_name = expr2] ...;

声明三个变量,分别为var1,var2,var3,数据类型为int,使用set为变量赋值,代码如下:

        Declare var1, var2, var3 int;

        Set var1=10, var2=20;

        Set var3 = var1 + var2;

还可以通过select ... from为一个变量赋值:select col_name[, ...] into var_name[, ...]  from table where...。

流程控制的使用

    1.IF语句,语法格式如下:

        IF expr_condition THEN statement_list

          [ELSEIF expr_condition THEN statement_list]...

          [ELSE statement_list]

        END IF

    2.case语句,语法格式如下:

       CASE case_expr

          WHEN when_value THEN statement_list

          [WHEN when_value THEN statement_list]...

          [ELSE statement_list]

        END CASE

    3.LOOP语句(循环操作的过程),语法格式如下:

      [loop_label:] LOOP

        statement_list

      END LOOP [loop_label]

    4.LEAVE语句

      LEAVE语句用来退出循环。

        Delare id int default 0;

        add_loop:LOOP

          SET id = id + 1;

            IF id >= 10 THEN LEAVE add_loop;

            END IF;

        END LOOP add_loop;

    5.ITERATE 语句,语法形式:ITERATE label

      该语句只能出现在循环内,意为“再次循环”。

    6.REPEAT语句

      该语句创建一个带条件判断的循环的过程,每次语句执行完毕,会对条件表达式进行判断,如果表达式为真,则循环结束,否则重复循环,语法形式如下:

        [repeat_label:] REPEAT

          statement_list

        UNTIL expr_condition

        END REPEAT [repeat_label]

repeat_label为标注名称(可省略),直至expr_condition条件为真,才会退出循环。

    7.WHILE语句

      该语句创建带条件判断的循环过程,与REPEAT语句不同,WHILE 执行语句时先对表达式进行判断,如果为真则执行循环内语句,否则退出循环,语法形式如下:

        [while_label:] WHILE expr_condition DO

          statement_list

        END WHILE [while_label]

时间: 2024-12-30 13:16:39

存储过程基本语法的相关文章

Oracle存储过程基本语法介绍

Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2: IS关键词表明后面将跟随一个PL/SQL体. 行3: BEGIN关键词表明PL/SQL体的开始. 行4: NULL PL/SQL语句表明什么事都不做,这句不能删

SQLServer存储过程基本语法

SQLSERVER: 变量的声明:声明变量时必须在变量前加@符号DECLARE @I INT 变量的赋值:变量赋值时变量前必须加setSET @I = 30 声明多个变量:DECLARE @s varchar(10),@a INT if语句: Java代码 if .. begin ... end else if .. begin ... end else begin ... end Example: Sql代码 DECLARE @d INT set @d = 1 IF @d = 1 BEGIN

Oracle存储过程function语法及案例

create or replace function F01_SX03_SUM(statdate varchar2, code varchar2, para varchar2) RETURN number IS v_me number; v_mb number; begin if para = 'me' then select nvl(sum(nvl(me, 0)), 0) / 10000 into v_me from sx03_gl_accass t where t.ccode like (c

Oracle存储过程Procedure语法及案例

create or replace procedure replace(desstr in varchar2, replacestr in varchar2, tablename in varchar2, strgranularity in varchar2, strorgankey in varchar2, strstatisticdate in date) is begin update t41_systemcal_upday t1 set t1.calchar = replace(t1.c

Oracle存储过程基本语法 存储过程

Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2: IS关键词表明后面将跟随一个PL/SQL体. 行3: BEGIN关键词表明PL/SQL体的开始. 行4: NULL PL/SQL语句表明什么事都不做,这句不能删

SQLServer - 存储过程基本语法

oracle的建表sql转成sqlserver的建表sql时的注意点 : 1.所有的comment语句需要删除. 2.clob类型转换为text类型. 3.blob类型转换为image类型. 4.number类型转换为int,number(16,2)等转换为decimal(16,2),number(18)转换为bigint. 5.default sysdate改为default getDate(). 6.to_date('2009-12-18','yyyy-mm-dd')改为cast('2009

Oracle存储过程基本语法

存储过程 1  CREATE OR REPLACE PROCEDURE 存储过程名 2  IS 3  BEGIN 4  NULL; 5  END; 行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2: IS关键词表明后面将跟随一个PL/SQL体. 行3: BEGIN关键词表明PL/SQL体的开始. 行4: NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL

(转)Oracle存储过程基本语法

本文转载自:http://www.cnblogs.com/hero4china/articles/base_rule_oracle_procedure.html 存储过程 1  CREATE OR REPLACE PROCEDURE 存储过程名 2  IS 3  BEGIN 4  NULL; 5  END; 行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2: IS关键词表明后面

MySQL存储过程(1) 语法学习

简介:一个存储过程包括名字,参数列表,以及可以包括很多SQL语句的SQL语句集. 一个存储过程包括名字,参数列表,以及可以包括很多SQL语句的SQL语句集. 创建存储过程: 语法: CREATE PROCEDURE p() BEGIN /*此存储过程的正文*/ END CREATE PROCEDURE productpricing() BEGIN SELECT Avg(pro_price) AS priceaverage FROM products; END; # begin…end之间是存储过

oracle存储过程创建语法及常见异常

oracle存储过程创建语法及常见异常: oracle存储过程语法: CREATE[ORReplace]PROCEDURE[schema.]procedure_name [(argument[{IN|OUT|INOUT}]datatype, ... argument[{IN|OUT|INOUT}]datatype)] {IS|AS} [descriptionpart说明部分] BEGIN SQLSTATEMENT语句序列 [EXCEPTION例外处理] END[procedureName过程名]