oracle plsql基本语法

包头:
CREATE OR REPLACE PACKAGE pkg_study_test IS

/***********************************************************
#function:oracle函数写法
#version:1.0
#author:作者
#createdate:2014-03-25
***********************************************************/
FUNCTION f_addition(v_num1 NUMBER,
v_num2 NUMBER) RETURN NUMBER;

/***********************************************************
#function:oracle过程写法
#version:1.0
#author:作者
#createdate:2014-03-25
***********************************************************/
PROCEDURE p_addition(v_num1 NUMBER,
v_num2 NUMBER,
v_out_num OUT NUMBER);

/***********************************************************
#function:oralce plsql 基本语法
#version:1.0
#author:作者
#createdate:2014-03-25
***********************************************************/
PROCEDURE p_basic_syntax(v_score NUMBER DEFAULT 60,
v_out_param OUT NUMBER);

END pkg_study_test;


包体:

CREATE OR REPLACE PACKAGE BODY pkg_study_test IS

FUNCTION f_addition(v_num1 NUMBER,
v_num2 NUMBER) RETURN NUMBER IS
/***********************************************************
#function:oracle函数写法
#version:1.0
#author:作者
#createdate:2014-03-25
***********************************************************/
v_rslt NUMBER(16);
BEGIN
v_rslt := v_num1 + v_num2;
RETURN v_rslt;
END;

PROCEDURE p_addition(v_num1 NUMBER,
v_num2 NUMBER,
v_out_num OUT NUMBER) IS
/***********************************************************
#function:oracle过程写法
#version:1.0
#author:作者
#createdate:2014-03-25
***********************************************************/
v_rslt NUMBER(16);
BEGIN
v_rslt := v_num1 + v_num2;
v_out_num := v_rslt;
END p_addition;

PROCEDURE p_basic_syntax(v_score NUMBER DEFAULT 60,
v_out_param OUT NUMBER) IS
/***********************************************************
#function:oralce plsql 基本语法
#version:1.0
#author:作者
#createdate:2014-03-25
***********************************************************/
v_num1 NUMBER; --变量定义
v_num2 NUMBER;
v_num3 NUMBER;
v_owner all_tables.owner%TYPE; --这样定义变量不会因为修改表结构导致过程需要重新修改
v_tab_name all_tables.table_name%TYPE;
v_index NUMBER; --循环变量
v_count NUMBER(10);
BEGIN
v_num1 := 1; --变量赋值
v_num2 := 2;
v_num3 := pkg_study_test.f_addition(v_num1, v_num2);
dbms_output.put_line(v_num3);
--
--for 循环例子
FOR cur_tab IN (SELECT a.owner, a.table_name
FROM all_tables a
WHERE a.owner = 'AMBER'
AND rownum < 10)
LOOP
dbms_output.put_line(cur_tab.owner || '=' || cur_tab.table_name);
END LOOP;
FOR v_index IN 1 .. v_num3
LOOP
dbms_output.put_line('输出循环变量=' || v_index);
END LOOP;
--
--
--while 循环 及 exit when
v_index := 1;
v_num3 := 100;
WHILE (v_index < v_num3)
LOOP
dbms_output.put_line('输出循环变量=' || v_index);
EXIT WHEN v_index = 3;
v_index := v_index + 1;
END LOOP;
--
--if else 判断
SELECT COUNT(*)
INTO v_count
FROM all_tables a
WHERE a.owner = 'AMBER';
IF v_count = 0 THEN
dbms_output.put_line('AMBER用户下没有表');
ELSE
dbms_output.put_line('AMBER用户下有' || v_count || '张表.');
END IF;
-- if elsif else 判断
IF v_score < 60 THEN
dbms_output.put_line('成绩不及格');
ELSIF v_score >= 60 AND v_score < 80 THEN
dbms_output.put_line('成绩良好');
ELSIF v_score >= 80 AND v_score < -100 THEN
dbms_output.put_line('成绩优秀');
ELSE
dbms_output.put_line('成绩不不存在');
END IF;
END;

END pkg_study_test;

你可能感兴趣的:(oracle)