pl/sql 常用指令碼

來源:互聯網
上載者:User

--觸發器

CREATE OR REPLACE TRIGGER GBJ.B_INSERT_TEST
BEFORE INSERT OR UPDATE
OF NCOLUMN
ON GBJ.TEST_TABLE
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
if :new.ncolumn=0 then
   raise_application_error(-20180,'只能插入正數!');
end if;
    
END B_INSERT_TEST;

--預存程序

CREATE OR REPLACE procedure Proce_Insert IS

   v_Num1  NUMBER :=3;
   v_Num2  NUMBER :=4;
   v_Str1  varchar2(30):='fasfasf';
   v_Str2  varchar2(30):='fasdfasdfaf';
   v_OutputStr  varchar2(30);

begin
    insert into test_table(ncolumn,vcolumn)values(v_Num1,v_Str1);
 insert into test_table(ncolumn,vcolumn)values(v_Num2,v_Str2);
 commit;
 select vcolumn into v_OutputStr  from test_table  where ncolumn=v_Num1;
 dbms_output.put_line(v_OutputStr);
 select vcolumn into v_OutputStr  from test_table  where ncolumn=v_Num1;
 dbms_output.put_line(v_OutputStr);
end Proce_Insert;
/

--建立過程

SQL> set serveroutput on;  --設定輸出結果
declare

   v_Num1  NUMBER :=3;
   v_Num2  NUMBER :=4;
   v_Str1  varchar2(30):='fasfasf';
   v_Str2  varchar2(30):='fasdfasdfaf';
   v_OutputStr  varchar2(30);

begin
    insert into test_table(ncolumn,vcolumn)values(v_Num1,v_Str1);
 insert into test_table(ncolumn,vcolumn)values(v_Num2,v_Str2);
 commit;
 select vcolumn into v_OutputStr  from test_table  where ncolumn=v_Num1;
 dbms_output.put_line(v_OutputStr);
 select vcolumn into v_OutputStr  from test_table  where ncolumn=v_Num1;
 dbms_output.put_line(v_OutputStr);
end ;
/

--pl/sql 程式塊

declare

   v_ncolumn   NUMBER :=6;
   v_vncolumn  varchar2(30);

begin
 select vcolumn into v_vncolumn  from test_table  where ncolumn=v_ncolumn;
 dbms_output.put_line('The Message ''s  '  ||v_vncolumn );
 
exception
   when NO_DATA_FOUND  THEN
   dbms_output.put_line('ûÓÐÕÒµ½Æ¥ÅäµÄÊý¾Ý!');
 
end ;
/

--定義記錄類型

type  T_dzrecord  is record
(
  v_vname   varchar2(20);  --姓氏欄位
  v_vcode   varchar2(20);  --代碼欄位
  v_vsex    number(2);     --性別欄位
  
);

--定義記錄類型變數

v_dzinfo  T_dzrecord;

--記錄類型(在過程中的)使用

select  v_vname,v_vcode, v_vsex  into   v_dzinfo  from   **_table;   --方法1
select  * into   v_dzinfo  from   **_table; --方法2

--定義和欄位類型相同變數的另一種方法

declare

variable_name    table_name.column%TYPE;

--記錄中應用type
type  T_dzrecord  is record
(
  v_vname   table_name.column%TYPE;  --姓氏欄位
  v_vcode   table_name.column%TYPE;  --代碼欄位
  v_vsex    table_name.column%TYPE;  --性別欄位
  
);

--對於表中擁有多個資料列,定義記錄變數時可以用下面的簡單方法

declare

variable_name    table_name%ROWTYPE;

--使用

variable_name.v_vsex:=1;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.