oracle plsql基本语法

本文详细介绍了Oracle PL/SQL中的函数和过程的编写方法,包括基本语法、参数传递、返回值处理等核心内容,并通过示例展示了如何在实际场景中应用这些概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

包头:
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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值