plsql基础(我们似曾相识系列2)
1,赋值
在plsql中的赋值符号是::=
2,特殊一点的符号
1 (..)两点在plsql中是范围运算符,在loop中会用到。
2 字符连接符号是用:||
3,字符和数字运算注意点
空值加数字仍是空值: NULL + < 数字 > = NULL
空值加(连接)字符,结果为字符: NULL || < 字符串 > = < 字符串 >
4,类型的转换
char转换成number:v_total := TO_NUMBER( ‘ 100.0 ’ ) + sal;
number转换成char:v_comm := TO_CHAR( ‘ 123.45 ’ ) || ’ ’ ;
字符转换成日期:v_date := TO_DATE ('2001.07.03','yyyy.mm.dd') ;
日期转换成字符:v_to_day := TO_CHAR( SYSDATE , 'yyyy.mm.dd hh24:mi:ss') ;
5,IF语句
注意点有一个就是:else if 要写成:elsif。
6,CASE语句
CASE selector
WHEN expression1 THEN result1
WHEN expression2 THEN result2
WHEN expressionN THEN resultN
[ ELSE resultN+1]
END;
例:
DECLARE
V_grade char(1) := UPPER( ‘ &p_grade ’ );
V_appraisal VARCHAR2(20);
BEGIN
V_appraisal :=
CASE v_grade
WHEN ‘ A ’ THEN ‘ Excellent ’
WHEN ‘ B ’ THEN ‘ Very Good ’
WHEN ‘ C ’ THEN ‘ Good ’
ELSE ‘ No such grade ’
END;
DBMS_OUTPUT.PUT_LINE( ‘ Grade: ‘ ||v_grade|| ’ Appraisal: ‘ || v_appraisal);
END;
7,循环
第一种:
LOOP
要执行的语句 ;
E XIT WHEN < 条件语句 > /* 条件满足,退出循环语句 */
END LOOP;
DECLARE
int NUMBER(2) :=0;
BEGIN
LOOP
int := int + 1;
DBMS_OUTPUT.PUT_LINE('int 的当前值为 :'||i nt );
EXIT WHEN int =10;
END LOOP;
END;
第二种:
WHILE < 布尔表达式 > LOOP
DECLARE
x NUMBER;
BEGIN
x:= 1;
WHILE x<10 LOOP
DBMS_OUTPUT.PUT_LINE(' X 的当前值为 :'|| x );
x:= x+1;
END LOOP;
END ;
第三种:
FOR 循环计数器 IN [ REVERSE ] 下限 .. 上限 LOOP
要执行的语句 ;
END LOOP;
可以使用 EXIT 退出循环。
BEGIN
FOR i nt in 1..10 LOOP
DBMS_OUTPUT.PUT_LINE('i nt 的当前值为 : '||i nt );
END LOOP;
END;
8,GOTO
<<label>> /* 标号是用 << >> 括起来的标识符 */
例
DECLARE
V_counter NUMBER := 1;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE('V_counter 的当前值为 :'||V_counter);
V_counter := v_counter + 1;
IF v_counter > 10 THEN
GOTO l_ENDofLOOP;
END IF;
END LOOP;
<<l_ENDofLOOP>>
DBMS_OUTPUT.PUT_LINE('V_counter 的当前值为 :'||V_counter);
END ;
9,关于 NULL
在 PL/SQL 程序中,可以用 null 语句来说明 “ 不用做任何事情 ” 的意思,相当于一个占 位
符,可以使某些语句变得有意义,提高程序的可读性。如:
DECLARE
. . .
BEGIN
…
IF v_num IS NULL THEN
GOTO print1;
END IF;
…
<<print1>>
NULL; -- 不需要处理任何数据
END;
低头做事,抬头做人。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述