/*输出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. web Deploy发布问题

    使用vs开发的时候,经常会发布项目.传统发布是登陆远程桌面.或ftp这些发布都有一定的麻烦.不能灵活的管理发布的文件.因此后来研究了web Deploy,研究之后发现是很不错的发布工具.这里把我使用w ...

  2. SQL瓶颈分析,以及适应最佳执行计划的探讨

    原文地址:   https://blog.csdn.net/daiqiulong2/article/details/86546446?tdsourcetag=s_pcqq_aiomsg 年纪大了,慢慢 ...

  3. sanic set up

    (venv) MacBook-Pro:bin shihw$ pip3 install sanicCollecting sanic Downloading https://files.pythonhos ...

  4. Struts2的核心——拦截器

    虽然以前已经学了很多的拦截器,但是在这里还是想重头梳理一下所有有关拦截器的知识,尤其是struts2中的拦截器 1:拦截器是什么? java里的拦截器是动态拦截Action调用的对象.它提供了一种机制 ...

  5. 爬虫基础(四)-----MongoDB的使用

    ------------------------------------------------------------------------摆脱穷人思维 <四> :减少无意义的频繁决策 ...

  6. 通过FactoryBean配置Bean

    这是配置Bean的第三种方式,FactoryBean是Spring为我们提供的,我们先来看看源码: 第一个方法:public abstract T getObject() throws Excepti ...

  7. js DOM操作 容易犯的错误

    这样一段html片段 <select class="form-control" id="course_chapter" onchange="fi ...

  8. react-navigation 简介

    StackNavigator: 原理和浏览器相似但又有局限,浏览器的方式是开放性的,通过点击一个链接可以跳转到任何页面(push),点击浏览器后退按钮,返回到前一个页面(pop).StackNavig ...

  9. vue 自定义指令的使用案例

    参考资料: 1. vue 自定义指令: 2. vue 自定义指令实现 v-loading: v-loading,是 element-ui 组件库中的一个用于数据加载过程中的过渡动画指令,项目中也很少需 ...

  10. jsp篇 之 EL表达式

    EL表达式: 形式:${ } 作用:从一个[范围对象里面取值]或者从一个对象中取值或是向页面输出值. 之前我们使用<% ... %>等形式,并不够简洁. 例如: <% request ...