Oracle使用手冊(一)—聲明變數

來源:互聯網
上載者:User
/**//*
--建表
create table student(
recordid number(38),
sid int not null ,
sname varchar2(50), 
sdate date,
sage  number(3)
);
*/
--刪除表
--drop table student;


--插入資料
/**//*
set serveroutput on  --允許伺服器輸出
declare 
maxrecords constant int:=100;
i int:=1;
begin
for i in 1..maxrecords 
loop
insert into student(sid,sdate)values(i,sysdate);
end loop
--dbms_output.put_line('成功錄入資料!');
commit;
end;
*/
--select * from student;
--聲明一個變數
/**//*
declare 
pi constant number(9):=3.1415926;
begin
commit;
end;
*/
--複合資料型別(常見的五種)
--1 .使用 %type 定義變數
--為了讓PL/SQL中變數的類型和資料表中的欄位的資料類型一致,Oracle 9i提供了%type定義方法。
--這樣當資料表的欄位類型修改後,PL/SQL程式中相應變數的類型也自動修改.
 /**//*
 Declare
        mydate student.sdate%type;
    begin
        commit;
    end;
 */
--2. 定義記錄類型變數
--將多個基礎資料型別 (Elementary Data Type)捆綁在一起的記錄資料類型。

/**//*
set serveroutput on
    declare
        type myrecord is record(
           sid int,
           sdate date);
        srecord myrecord; --聲明一個自訂記錄類型變數的執行個體
    begin
        select sid,sdate into srecord from student where sid=68;
        dbms_output.put_line('ID: '|| srecord.sid ||'Date:'||  srecord.sdate); --'||': 它是字串串連符.
    end;
*/
    
--3.使用 %rowtype 變數
--使用%type可以使變數獲得欄位的資料類型,使用%rowtype可以使變數獲得整個記錄的資料類型。
--比較兩者定義的不同:變數名 資料表.列名%type,變數名 資料表%rowtype。
/**//*
set serveroutput on
Declare
        mytableRow student%rowtype;
    begin
       select * into mytableRow
       from student
       where sid=88;
       dbms_output.put_line(mytableRow.sid || mytableRow.sdate);
    end;
*/
--4.定義一維表類型變數
--表類型變數和資料表是有區別的,定義表類型變數的文法如下:
-- ―――――――――――――――――――――――――――――――――――――
--    type 表類型 is table of 類型 index by binary_integer;
--    表變數名 表類型;
-- ―――――――――――――――――――――――――――――――――――――
-- 類型可以是前面的類型定義,index by binary_integer子句代表以符號整數為索引,
-- 這樣訪問表類型變數中的資料方法就是“表變數名(索引符號整數)”。
 /**//*
  Declare
       type tabletype1 is table of varchar2(4) index by binary_integer; --定義一個字元型的一維數組
       type tabletype2 is table of student.sid%type index by binary_integer;--定義了一個整數數型的數組
    table1 tabletype1;  --執行個體聲明
    table2 tabletype2;  --執行個體聲明
    begin
       table1(1):='學生';
       table1(2):='職員';
       table2(1):=88;
       table2(2):=89;
       dbms_output.put_line(table1(1)||table2(1));
       dbms_output.put_line(table1(2)||table2(2));
    end;
*/
--5.定義多維類型表變數
--相當於定義多維陣列.
--注意在運行下面的語句前要在資料庫中插入資料.
Declare
      type tabletype1 is table of student%rowtype index by binary_integer;
      table1 tabletype1;
    begin
       select * into table1(60)
       from student
       where sid=60;
       dbms_output.put_line(table1(60).sid ||table1(60).sdate);
    end;



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.