/*输出hello world*/
DECLARE
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello World');
END; --set serveroutput on;
/**
if 语句
1.弹出提示信息
2.num接收一个数据地址
*/
-- accept num prompt '请输入一个数字';
DECLARE
PNUM NUMBER := #
BEGIN
IF PNUM = 0 THEN
DBMS_OUTPUT.PUT_LINE('您输入的数字是0');
ELSIF PNUM = 1 THEN
DBMS_OUTPUT.PUT_LINE('您输入的数字是1');
ELSIF PNUM = 2 THEN
DBMS_OUTPUT.PUT_LINE('您输入的数字是2');
ELSE
DBMS_OUTPUT.PUT_LINE('您输入的是其他数字');
END IF;
END;
--普通 case
DECLARE
PNUM NUMBER := #
BEGIN
CASE PNUM
WHEN 0 THEN
DBMS_OUTPUT.PUT_LINE('你输入的数字是0');
WHEN 1 THEN
DBMS_OUTPUT.PUT_LINE('你输入的数字是1');
WHEN 2 THEN
DBMS_OUTPUT.PUT_LINE('你输入的数字是2');
WHEN 3 THEN
DBMS_OUTPUT.PUT_LINE('你输入的数字是3');
ELSE
DBMS_OUTPUT.PUT_LINE('您输入的是其他数字');
END CASE;
END;
--条件case
DECLARE
P NUMBER := #
BEGIN
CASE
WHEN P = 0 THEN
DBMS_OUTPUT.PUT_LINE('你输入的数字是0');
WHEN P = 1 THEN
DBMS_OUTPUT.PUT_LINE('你输入的数字是1');
ELSE
DBMS_OUTPUT.PUT_LINE('您输入的是其他数字');
END CASE;
END; /*打印1-10*/
SET SERVEROUTPUT ON;
/*使用set serveroutput on 命令设置环境变量serveroutput为打开状态,从而使得pl/sql程序能够在SQL*plus中输出结果 */
DECLARE
PNUM NUMBER := 1;
BEGIN
LOOP
--退出 满足条件退出
EXIT WHEN PNUM > 10;
DBMS_OUTPUT.PUT_LINE(PNUM);
PNUM := PNUM + 1;
END LOOP;
END; /**输出变量*/
DECLARE
I INT;
J INTEGER := 11;
C CHAR(4);
C1 VARCHAR2(10) NOT NULL := 'aaa'; --不能为null
C2 CONSTANT VARCHAR2(10) := 'afd'; --类型随之改变而改变,常量不能二次赋值
EMPNO EMP.EMPNO%TYPE; --SELECT * FROM emp; BEGIN
-- i := 10;
-- j := j + 1;
-- c := 'abc';
-- c1 := 'a';
--c1 := null; -- error code --c2 := 'afd';--error code
EMPNO := 1234; IF I = 10 THEN
DBMS_OUTPUT.PUT_LINE('i是10');
ELSE
DBMS_OUTPUT.PUT_LINE('i不是10');
END IF; DBMS_OUTPUT.PUT_LINE('i= : ' || I);
DBMS_OUTPUT.PUT_LINE('j= : ' || J);
DBMS_OUTPUT.PUT_LINE('c= : ' || C || LENGTH(C));
DBMS_OUTPUT.PUT_LINE('c1= : ' || C1);
DBMS_OUTPUT.PUT_LINE('c2= : ' || C2);
DBMS_OUTPUT.PUT_LINE('empno= : ' || EMPNO); END; ---**基本变量****-
DECLARE
--声明部分标识
V_JOB VARCHAR2(9);
V_COUNT BINARY_INTEGER DEFAULT 0;
V_TOTAL_SAL NUMBER(9, 2) := 0;
V_DATE DATE := SYSDATE - 1;
C_TAX_RATE CONSTANT NUMBER(3, 2) := 8.25; --常量不可二次赋值
V_VALID BOOLEAN NOT NULL := TRUE;
BEGIN
V_JOB := 'MANAGER';
--在程序中赋值
DBMS_OUTPUT.PUT_LINE(V_JOB);
--输出变量v_job的值
DBMS_OUTPUT.PUT_LINE(V_COUNT);
--输出变量v_count的值
DBMS_OUTPUT.PUT_LINE('日期是:' || V_DATE);
--输出变量v_date的值
DBMS_OUTPUT.PUT_LINE(C_TAX_RATE);
--输出变量c_tax_rate的值
END; --九九乘法表 for循环
DECLARE
I NUMBER;
J NUMBER;
BEGIN
FOR I IN 1 .. 9 LOOP
FOR J IN 1 .. I LOOP
--内循环
DBMS_OUTPUT.PUT(I || '*' || J || '=' || (I * J) || ' ');
END LOOP;
--外循环
DBMS_OUTPUT.PUT_LINE('');
END LOOP;
END; --九九乘法表 while循环
DECLARE
I NUMBER := 1;
J NUMBER := 1;
BEGIN
WHILE I < 10 LOOP
WHILE J <= I LOOP
--内循环
DBMS_OUTPUT.PUT(I || '*' || J || '=' || (I * J) || ' ');
J := J + 1;
END LOOP;
--外循环
I := I + 1;
J := 1;
DBMS_OUTPUT.PUT_LINE('');
END LOOP;
END;
--打印水仙花数 153
DECLARE
I NUMBER;
J NUMBER;
K NUMBER;
M NUMBER;
BEGIN
FOR I IN 100 .. 999 LOOP K := FLOOR(I / 100); --百位
J := FLOOR((I - K * 100) / 10); --十位
M := I MOD 10; --个位
IF I = J ** 3 + K ** 3 + M ** 3 THEN
DBMS_OUTPUT.PUT_LINE(I);
END IF;
END LOOP;
END; BEGIN
FOR V_I IN REVERSE 1 .. 10 LOOP
--v_i的值从10至1
DBMS_OUTPUT.PUT_LINE(V_I);
END LOOP;
END; /***循环嵌套加标号跳出****/
--使用一个基本嵌套循环,找出2-81中的素数,素数是指除了1和它本身以外,不能被任何整数整除的数。
DECLARE
--素数范围
M NUMBER(3);
--进行判读的因子
J NUMBER(3);
BEGIN
M := 2;
<<OUTER_LOOP>> --外循环标记
LOOP
J := 2;
--内循环标记
<<INNER_LOOP>>
LOOP
--当m能被j整除或m与j相等时,结束该循环
EXIT WHEN((MOD(M, J) = 0) OR (J = M));
--不满足上述条件,给j加一继续当前循环
J := J + 1;
END LOOP INNER_LOOP;
--如果m与j相等输出m值
IF (J = M) THEN
DBMS_OUTPUT.PUT_LINE(M || ' 是素数');
END IF;
M := M + 1;
--当m等于81结束当前循环
EXIT WHEN M = 81;
END LOOP OUTER_LOOP;
END;

  

--在主串中查找子串是否存在
declare
mStr varchar2(30) := 'abaacbacabca';
sStr varchar2(5) := 'abc';
j integer;
k integer;
mLen integer;
sLen integer;
loopsize integer;
begin
--v_result := false;
mLen := length(mStr);
sLen := length(sStr);
loopsize := mLen - sLen + 1;
<<out_loop>>
for i in 1..loopsize loop
j := i;
k := 1;
while substr(mStr, j, 1) = substr(sStr, k, 1) loop
if k = sLen then
--v_result := true;
dbms_output.put_line('success');
exit out_loop;
end if;
j := j+1;
k := k+1;
end loop;
end loop; --return(v_result);
end;

  

PL/SQl编程 基本语法的更多相关文章

  1. ORACLE PL/SQL编程详解

    ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...

  2. pl/sql编程

    body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...

  3. [强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)

    原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天 ...

  4. ORACLE PL/SQL编程之八:把触发器说透

    原文:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之八: 把触发器说透 大家一定要评论呀,感谢!光发表就花了我将近一个下午. 本篇主要内容如下: 8.1 触发器类型 ...

  5. [推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼、百战不殆)

    原文:[推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼.百战不殆) [推荐]ORACLE PL/SQL编程之五: 异常错误处理(知已知彼.百战不殆) 继上三篇:ORACLE PL/S ...

  6. ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)

    原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!)   继上篇:ORACLE P ...

  7. [推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆)

    原文:[推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆) [推荐]ORACLE PL/SQL编程详解之三: PL/SQL流程控制语句(不给规则,不成方圆) ...

  8. [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到)

    原文:[推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) [推荐]ORACLE PL/SQL编程之四: 把游标说透(不怕做不到,只怕想不到) 继上两篇:ORACLE PL ...

  9. [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)

    原文:[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下) [推荐]ORACLE PL/SQL编程详解之一: PL/SQL 程序设计简介(千里之行,始于足下 ...

随机推荐

  1. 一次CMS GC问题排查过程(理解原理+读懂GC日志)

    这个是之前处理过的一个线上问题,处理过程断断续续,经历了两周多的时间,中间各种尝试,总结如下.这篇文章分三部分: 1.问题的场景和处理过程:2.GC的一些理论东西:3.看懂GC的日志 先说一下问题吧 ...

  2. day4-python基础-数据类型

    今日份小技巧 a =3 b=4, 最快将a和b值替换的方法为 a,b =b,a 今日内容 1. 字典 2. 集合 3.hash 4.基本数据类型总结 5.循环之for循环 6.range的使用 7.深 ...

  3. python3 闭包函数

    '''闭包函数:内部函数引用外部函数变量(非全局变量)'''def func(y): x = 1 def func1(): print(x, y) return func1 f = func(2)pr ...

  4. spring启动component-scan类扫描加载过程(转)

    文章转自 http://www.it165.net/pro/html/201406/15205.html 有朋友最近问到了 spring 加载类的过程,尤其是基于 annotation 注解的加载过程 ...

  5. 599. Minimum Index Sum of Two Lists(easy)

    Suppose Andy and Doris want to choose a restaurant for dinner, and they both have a list of favorite ...

  6. hdu-1728(贪心&&bfs的灵活运用吧)

    链接 [https://vjudge.net/contest/256476#problem/D] 题意 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到 ...

  7. 树的平衡之AVL树——错过文末你会后悔,信我

    学习数据结构应该是一个循序渐进的过程: 当我们学习数组时,我们要体会数组的优点:仅仅通过下标就可以访问我们要找的元素(便于查找). 此时,我们思考:假如我要在第一个元素前插入一个新元素?采用数组需要挪 ...

  8. Redis单机配置多实例,实现主从同步

    版权声明:本文为博主原创文章,欢迎转载,转载请保留或注明出处 本文转自:http://www.cnblogs.com/lgeng/p/6623336.html 一,单机多实例:Redis官网: htt ...

  9. LODOP提示、报错、现象,简短问答

    提示升级提示:“打印控件需要升级!点击这里执行升级,升级后请重新进入."“Web打印服务CLodop需升级!点击这里执行升级,升级后请刷新页面.”(新版提示) 参考http://www.c- ...

  10. poj 3764 The xor-longest Path (01 Trie)

    链接:http://poj.org/problem?id=3764 题面: The xor-longest Path Time Limit: 2000MS   Memory Limit: 65536K ...