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
INSERTINTO temp_table VALUES (v_Counter, 'Loop index');
v_Counter := v_Counter +1;
IF v_Counter >50THEN
EXIT;
END IF;
END LOOP;
END;
3.2 WHILE 循环
DECLARE
v_Counter BINARY_INTEGER :=1;
BEGIN
WHILE v_Counter <=50 LOOP
INSERTINTO temp_table VALUES (v_Counter, 'Loop index');
v_Counter := v_Counter +1;
END LOOP;
END;
3.3 for条件循环
DECLARE
v_Counter NUMBER :=7;
BEGINFOR v_Counter IN20..30 LOOP
INSERTINTO 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
用于向调用程序返回值
INOUT
用于接受调用程序的值,并向调用程序返回更新的值
将过程的执行权限授予其他用户:
SQL> GRANT EXECUTE ON find_emp TO MARTIN;
SQL> GRANT EXECUTE ON swap TOPUBLIC;
---------------------------------------
CREATE OR REPLACE PROCEDUREfind_emp(item_code IN VARCHAR2)ASBEGIN
[EXCEPTION]
ENDfind_emp;
函数
函数只能接受 IN 参数,而不能接受 INOUT 或 OUT 参数
形参不能是 PL/SQL 类型
函数的返回类型也必须是数据库类型
必须在规格说明中包含 RETURN 子句
-----------------------------------FUNCTION name RETURN fun_datatype
ISBEGIN
...
[EXCEPTION]
...
END;
-----------------------------------
函数调用
SELECT fun_datatype FROM DUAL
nType := fun_datatype
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理