Oracleデータベース--- PLSQL

SET SERVEROUTPUT ONは、
BEGIN
-打印输出
DBMS_OUTPUT.PUT_LINE( 'こんにちはみんなを!');
終わり;

DECLAREの
v_name VARCHAR2(10);
v_sal番号(7,2);
v_hiredate日付;
定数(3,2)c_tax_rate:= 0.02;
v_tax_sal番号(7,2)は、
DEFAULT TRUE BOOLEANをv_valid;
BEGIN
SELECT ENAME、SAL、HIREDATEを
INTO、v_salをv_name、v_hiredate
EMP FROM
EMPNO = 7369;
-税の計算
v_tax_salを:* = v_sal c_tax_rate;
-プリントアウト
DBMS_OUTPUT.PUT_LINE(v_name || '賃金:' || || v_sal「従業員の日付: '|| v_hiredate ||'税である: '|| v_tax_sal);
IFはTHEN v_valid
DBMS_OUTPUT.PUT_LINE(';「検証)
END IF;
ENDを、

-参照変数は
DECLAREの
v_nameは、型%をEMP.ENAME、
型%emp.sal v_sal;
BEGIN
SELECT ENAMEを、SAL
INTOのv_name、v_sal
EMP FROM
WHERE EMPNO = 7788;
-印刷出力
DBMS_OUTPUT.PUT_LINE(v_name ||「賃金それらは:「|| v_sal);
END;

-記録変数
のDECLARE
emp_record EMPの%のROWTYPE;
BEGIN
INTOがEMP WHERE EMPNO = 7788 FROM emp_record SELECT *;
-印刷出力
DBMS_OUTPUT.PUT_LINE(emp_record.ename || '賃金:' || emp_record.sal);
END ;

-算术运算符
DECLARE
v_num1番号(3):= 10;
v_num2 NUMBER(3):= 2;
BEGIN
DBMS_OUTPUT.PUT_LINEを(v_num1 + v_num2)。
DBMS_OUTPUT.PUT_LINE(v_num1-v_num2)。
DBMS_OUTPUT.PUT_LINE(v_num1 * v_num2)。
DBMS_OUTPUT.PUT_LINE(v_num1 / v_num2)。
DBMS_OUTPUT.PUT_LINE(v_num1 ** v_num2)。
終わり;

-关系运算符
DECLARE
v_num1番号(2):=&N1。
v_num2 NUMBER(2):=&N2。
BEGIN
IF(v_num1 = v_num2)THEN
DBMS_OUTPUT.PUT_LINE( 'NUM1等于NUM2')。
ELSIF(v_num1 <v_num2)THEN
DBMS_OUTPUT.PUT_LINE( 'NUM1小于からnum2');
ELSIF(v_num1> v_num2)THEN
DBMS_OUTPUT.PUT_LINE( 'NUM1大于からnum2');
END IF;

IF(v_num1 <> v_num2)THEN
DBMS_OUTPUT.PUT_LINE( 'NUM1不等于NUM2')。
END IF;
終わり;

-比較演算子
DECLARE
- &置換変数がプログラムを実行すると、値の入力を求めN1、ある
v_num1番号(2):&= N1;
BEGIN
(BETWEEN v_num1 5および10)IFをTHEN
10 DBMS_OUTPUT.PUT_LINE(「NUM1 5間の');
ELSE
DBMS_OUTPUT.PUT_LINE('ないNUM1の間の5〜10 ');
END IF;

にv_num1 IF((3,8,10)THEN)
DBMS_OUTPUT.PUT_LINE('等しい3,8,10にNUM1値');
ELSE
DBMS_OUTPUT.PUT_LINE('値NUM1が3,8,10等しくない');
END IF;

IF(IS NULL v_num1)THEN
DBMS_OUTPUT.PUT_LINE('空NUM1「);
ELSE
DBMS_OUTPUT .PUT_LINE( 'NUM1空でない');
END IF;
END;

-逻辑运算符
DECLARE
(V_B1)BOOLEAN:=&N1を。
v_b2 BOOLEAN:=&N2;
BEGIN
IF((V_B1)とv_b2)THEN
DBMS_OUTPUT.PUT_LINE( 'AND - TRUE');
END IF;

IF THEN((V_B1)OR v_b2)
DBMS_OUTPUT.PUT_LINE( 'OR - TRUE');
END IF;

IF(NOT(V_B1))THEN
DBMS_OUTPUT.PUT_LINE( '(V_B1)取反为TRUE');
END IF;
終わり;

-給与、賃金および3000未満の従業員名表示の賃金を決定するために従業員の数を入力します。
-単純なステートメントIF
DECLAREの
、v_nameは型%をEMP.ENAME
型%emp.sal v_sal;
BEGIN
SELECT ENAMEを、SAL
INTOのv_name、v_sal
EMP FROM
WHERE&EMPNO = NO;
THEN v_sal <3000 IF
DBMS_OUTPUT.PUT_LINE(v_name || '賃金:「|| v_sal);
END IF;
END;


SELECT * FROM EMP;

-給与を決定するために、従業員の数を入力し、3000の賃金よりも低い賃金は200を上昇し、昇給は、他の従業員は、従業員の名前と給与を表示する従業員の名前が表示されます。
-ダブル分岐ステートメントは、
DECLAREの
v_nameはTYPEの%をempnew.ename;
TYPE%のempnew.sal v_sal;
v_empno%empnew.empno TYPE:&= NO;
BEGIN
SELECT ENAME、SAL
INTOのv_nameを、v_sal
empnew FROM
WHERE EMPNO = v_empno;
IF v_sal < THEN 3000
のUPDATE SET empnew = SAL + SAL 200はWHERE EMPNO = v_empnoある;
A COMMIT;
DBMS_OUTPUT.PUT_LINE(v_name || '上昇');
ELSEの
DBMS_OUTPUT.PUT_LINE(v_name || '賃金:' || v_sal)。
IF END;
END;

SELECT * empnewから。


- 、賃金を決定するために、従業員の数を入力給与2000未満、6000未満の低所得、賃金を示し、中所得、高所得、他の画面を表示。
-複数の分岐文の
DECLAREの
v_nameはTYPEの%をempnew.ename;
v_sal empnew.sal TYPEの%;

BEGIN
SELECT ENAMEを、SAL
INTOのv_name、v_sal
empnew FROM
、WHERE&EMPNO = NO
IF v_sal <2000 THEN
DBMS_OUTPUT.PUT_LINE(v_name ||「の賃金は、 '|| v_sal ||'低所得');
ELSIF v_sal <6000 THEN
DBMS_OUTPUT.PUT_LINE(v_name ||'給与がある: '|| v_sal ||'中所得「);
ELSE
DBMS_OUTPUT.PUT_LINE (v_name || '賃金:' || v_sal || '高所得');
END IF;
END;

/ *
-給与、賃金および3000未満の従業員名表示の賃金を決定するために従業員の数を入力します。
-単純なステートメントIF
DECLAREの
、v_nameは型%をEMP.ENAME
型%emp.sal v_sal;
BEGIN
SELECT ENAMEを、SAL
INTOのv_name、v_sal
EMP FROM
WHERE&EMPNO = NO;
THEN v_sal <3000 IF
DBMS_OUTPUT.PUT_LINE(v_name || '賃金:「|| v_sal);
END IF;
END;


SELECT * FROM EMP;

-給与を決定するために、従業員の数を入力し、3000の賃金よりも低い賃金は200を上昇し、昇給は、他の従業員は、従業員の名前と給与を表示する従業員の名前が表示されます。
-ダブル分岐ステートメントは、
DECLAREの
v_nameはTYPEの%をempnew.ename;
TYPE%のempnew.sal v_sal;
v_empno%empnew.empno TYPE:&= NO;
BEGIN
SELECT ENAME、SAL
INTOのv_nameを、v_sal
empnew FROM
WHERE EMPNO = v_empno;
IF v_sal < THEN 3000
のUPDATE SET empnew = SAL + SAL 200はWHERE EMPNO = v_empnoある;
A COMMIT;
DBMS_OUTPUT.PUT_LINE(v_name || '上昇');
ELSEの
DBMS_OUTPUT.PUT_LINE(v_name || '賃金:' || v_sal)。
IF END;
END;

SELECT * empnewから。


- 、賃金を決定するために、従業員の数を入力給与2000未満、6000未満の低所得、賃金を示し、中所得、高所得、他の画面を表示。
-複数の分岐文の
DECLAREの
v_nameはTYPEの%をempnew.ename;
v_sal empnew.sal TYPEの%;

BEGIN
SELECT ENAMEを、SAL
INTOのv_name、v_sal
empnew FROM
、WHERE&EMPNO = NO
IF v_sal <2000 THEN
DBMS_OUTPUT.PUT_LINE(v_name ||「の賃金は、 '|| v_sal ||'低所得');
ELSIF v_sal <6000 THEN
DBMS_OUTPUT.PUT_LINE(v_name ||'給与がある: '|| v_sal ||'中所得「);
ELSE
DBMS_OUTPUT.PUT_LINE (v_name || '賃金:' || v_sal || '高所得');
END IF;
END;
* /

-ステージ属する決定されるレベルレベル、および印刷に入力
--case等価比較
DECLAREの
v_gradeチャー(1):= 'NO&';
BEGIN
v_grade CASEを
WHEN 'A' THEN
DBMS_OUTPUT.PUT_LINE( '優れました');
'B' THEN
DBMS_OUTPUT.PUT_LINE( '中');
'C' THEN
( '一般')DBMS_OUTPUT.PUT_LINE;
ELSE
DBMS_OUTPUT.PUT_LINE( '入力ミス');
END CASE;
END。

-もし5000未満賃金、利点プラス50、80件の助成金を給与2500未満であれば、給料が給料が1500未満である場合、決定、プラス100の付与される給与を得ること、従業員番号を入力し、プラス
--case非等価比較
DECLARE
v_sal empnew TYPE%.sal;
v_empno%empnew.empno TYPE:&= NO;
BEGIN
SELECT SAL
v_sal INTOを
empnew FROM
WHERE&EMPNO = NO;
CASE
v_sal <1500 THEN
WHERE v_empno UPDATEがSET empnew COMM = NVL(COMM、0)= +100 EMPNO ;
v_sal <2500 THEN WHEN
UPDATEはWHERE EMPNO v_empno empnew COMM = NVL(COMM、0)= 80を設定する。
WHEN v_sal <5000 THEN
; WHERE EMPNO v_empno empnew COMM = NVL(COMM、0)= +50 SET UPDATE
--commit ;
END CASE;
END;

empnewから*を選択します。

-基本循环
DECLARE
v_cntのINT:= 1;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE(v_cnt)を、
EXIT WHEN v_cnt = 10。
v_cnt:= v_cnt + 1。
END LOOP;
終わり;

循环--while
DECLAREの
v_cntのINT:= 1;
BEGIN
しばらくv_cnt <= 10 LOOP
DBMS_OUTPUT.PUT_LINE(v_cnt)。
v_cnt:= v_cnt + 1。
END LOOP;
終わり;

循环--for
BEGIN
REVERSE 1..10 LOOPでは、私のため
DBMS_OUTPUT.PUT_LINE(I);
END LOOP;
終わり;

-嵌套循环
DECLARE
v_resultのINTを、
BEGIN
<< outter >>
1..5 LOOPでは、私のため
<<間>>
1..5 LOOP INにJ FOR
v_result:= I;
EXITのoutter WHEN I = 4。
END LOOPの間;
DBMS_OUTPUT.PUT_LINE( '内' || v_result)。
エンドループoutter。
DBMS_OUTPUT.PUT_LINE( '外' || v_result)。
終わり;

--continue
DECLAREの
v_cntのINT:= 0;
BEGIN
LOOPの
v_cnt:= v_cnt + 1。
CONTINUE WHEN v_cnt = 5。
DBMS_OUTPUT.PUT_LINE(v_cnt)。
EXIT WHEN v_cnt = 10。
END LOOP;
終わり;

--GOTO语句
DECLARE
v_cnt INTを:= 1;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE(v_cnt)を、
IF v_cnt = 10 THEN
--exit。
GOTO END_LOOP;
END IF;
v_cnt:= v_cnt + 1。
END LOOP;
<< END_LOOP >>
DBMS_OUTPUT.PUT_LINE( '循环结束');
終わり;

--null语句
DECLARE
v_sal empnew.sal%のタイプを、
v_nameのempnew.enameの%のTYPE;
BEGIN
SELECT ENAME、SAL
v_name INTO、v_salを
empnew FROM
WHERE EMPNO =&ありません。
IF v_sal <3000 THEN
UPDATE設定empnew COMM = NVL(COMM、0)+ SAL * 0.2 WHERE ENAME = v_name。
コミット;
DBMS_OUTPUT.PUT_LINE(v_name || '的奖金更新了');
ELSE
NULL;
END IF;
終わり;

empnewから*を選択します。

 

おすすめ

転載: www.cnblogs.com/xiaomifeng1010/p/11111978.html