ListenSoftware解决方案“HowTo”系列2:存储过程

发表于:2007-05-25来源:作者:点击数: 标签:
Listen Software 解决方案 “How To” 系列2:存储过程 MI LY: Verdana; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt> 参照: 参照定义和使用游标 参照定义和使用函数 存储过程 CREATE OR REPLACE PROCEDURE {procedure

Listen Software解决方案 “How To” 系列2:存储过程

MILY: Verdana; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> 

      参照:

           参照定义和使用游标

           参照定义和使用函数

     

      存储过程

             CREATE OR REPLACE PROCEDURE {procedure name} 
( {argument} IN {datatype} ) IS v_variable {datatype}; 
--变量类型   
        VARCHAR(X);
        VARCHAR2(X);
        VARCHAR2;
        CHAR(X);
        NUMBER(P,S);   
--P-数字的位数
        --S-数字的精度   
        NUMBER(X);
        NUMBER;
        LONG;          
        --容纳32,760字节数据
        DOUBLE PRECISION;
        FLOAT;
        INT;
        REAL;
        DATE;
        RAW(X) 
        --容纳32,760字节数据
        LONG RAW; 
        --容纳32,760字节数据
        --注意数据库类型为LONG RAW 
        --容纳20亿字节数据
        RECORD;
        TABLE;
        VARRAY;
        LOB;
        CLOB;
         v_variable_c1  VARCHAR2(20);            
        --创建20个字符长的变量
         v_variable_c2  CHAR(10);               
        --创建固定长度为10个字符的变量 
        - 最大长度255 
        v_variable_c3  VARCHAR2;               
        --变量长度不能超过2000个字符
        v_variable_n1  table_name.field_name%TYPE; 
        --定义参照方案中表字段类型的变量类型    
        v_variable_n2  NUMBER;
        v_variable_n3  NUMBER := 3;
        v_variable_n4  NUMBER(10);
        v_variable_n5  NUMBER(10,2);
        v_variable_n6  LONG;
        v_variable_n7  FLOAT;
        v_variable_n8  REAL;
         TYPE t_my_record IS RECORD
        (
        v_variable1        VARCHAR2(8)
        ,v_variable2 NUMBER(10)
        ,v_variable3 DATE
        );
         my_record t_my_record;
         TYPE t_my_table is TABLE OF VARCHAR2(10)   
        --vb中的数据结构相似
         INDEX BY BINARY_INTEGER;
         my_table t_my_table;
 BEGIN 
        --这儿插入代码
         v_variable_c1 := 'Hello World';
        v_variable_n2 :=10;
         --条件逻辑
         IF v_variable_n2 = 1 THEN
                v_variable_c2 := 'Exact Match';
        ELSIF v_variable_n3 > 2 THEN
                v_variable_c2 := 'Greater Than Match';
        ELSE
                v_variable_c3 := 'None of the Above';
        END IF;
         my_record.v_variable1:='ABC';
        my_record.v_variable2:=3;
        my_record.v_variable3:=TO_DATE('11-JAN-1999','DD-MON-YYYY');
         my_table(1)='A';
         my_table(2)='B';
        /* v_variable_n2的值为10,因此第一个条件为false.
           v_variable_n3初始为3,因此条件为true, 
           v_variable_c2的值就为'Greater Than Match'
           循环 */
         v_variable_n2:=0;
        LOOP
                v_variable_n2:=v_variable_n2+1;
                EXIT WHEN v_variable_n2 > 10;
        END LOOP;
       v_variable_n2:=0;
      WHILE v_variable_n2<10 LOOP
                v_variable_n2:=v_variable_n2+1;
        END LOOP;
         FOR v_variable_n2 in 1..10 LOOP
         END LOOP;
 END {procedure name};

原文转自:http://www.ltesting.net