PLSQL 执行块

流程控制

1. IF

 IF 条件 THEN
   
  ELSE
   
  END IF;

2. CASE

CASE '&grade'
WHEN ’A’ THEN DBMS_OUTPUT.PUT_LINE(’优异’);
WHEN ’B’ THEN DBMS_OUTPUT.PUT_LINE (优秀’);

3. 循环控制

3.1 LOOP 循环
/* 无条件循环 */
DECLARE
  v_Counter BINARY_INTEGER := 1;
BEGIN
  LOOP
     INSERT INTO temp_table VALUES (v_Counter, 'Loop index');
     v_Counter := v_Counter + 1;

     IF v_Counter > 50 THEN
         EXIT;
     END IF;

  END LOOP;
END;
3.2 WHILE 循环
DECLARE
  v_Counter BINARY_INTEGER := 1;
BEGIN
  WHILE v_Counter <= 50 LOOP
      INSERT INTO temp_table VALUES (v_Counter, 'Loop index');
      v_Counter := v_Counter + 1;
  END LOOP;
END;
3.3 for条件循环
DECLARE
  v_Counter  NUMBER := 7;
BEGIN
   FOR v_Counter IN 20..30 LOOP
     INSERT INTO temp_table (num_col) VALUES (v_Counter);
   END LOOP;
END;

4. 顺序控制

4.1 GOTO 语句
DECLARE
 ...
BEGIN
 ...
    GOTO updation;
 ...
   <<updation>>
END;

4.2 NULL 语句

SQL块结构

SET SERVEROUTPUT ON  在块中使用传递参数:&nCount

DECLARE	声明
...
BEGIN	执行部分
...
EXCEPTION	异常处理部分
...
END;

匿名块

[DECLARE]

BEGIN

[EXCEPTION]

END;

存储过程

IN
用于接受调用程序的值
OUT
用于向调用程序返回值 
IN OUT
用于接受调用程序的值,并向调用程序返回更新的值

将过程的执行权限授予其他用户:
SQL> GRANT EXECUTE ON find_emp TO MARTIN;
SQL> GRANT EXECUTE ON swap TO PUBLIC;
---------------------------------------
CREATE OR REPLACE PROCEDURE find_emp(item_code IN VARCHAR2)
AS
 
BEGIN

[EXCEPTION]

END find_emp;

函数

函数只能接受 IN 参数,而不能接受 IN OUTOUT 参数
形参不能是 PL/SQL 类型
函数的返回类型也必须是数据库类型
必须在规格说明中包含 RETURN 子句
-----------------------------------
FUNCTION name RETURN fun_datatype
IS
BEGIN
	...
[EXCEPTION]
	...
END;
-----------------------------------
函数调用
SELECT fun_datatype FROM DUAL
nType := fun_datatype
posted @   osbreak  阅读(26)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示