zoukankan      html  css  js  c++  java
  • PL/SQl编程 基本语法

    /*输出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;
    

      

  • 相关阅读:
    HorizontalScrollView水平滚动控件
    编解码学习笔记(十):Ogg系列
    449A
    要点Java17 String
    struts2复习(五)拦截器总结
    java的wait和notifyAll使用方法
    centos网速特别慢的最佳解决的方法
    一年成为Emacs高手(像神一样使用编辑器)
    c++ 操作注冊表
    python 多线程编程
  • 原文地址:https://www.cnblogs.com/ysg520/p/9989525.html
Copyright © 2011-2022 走看看