賦值給變數的方法:1、使用「:=」直接賦值,語法「變數名:=值;」;2、使用「select 表欄位into 變數from 表」語句;3、使用「 execute immediate sql語句字串into 變數」語句。
本教學操作環境:Windows7系統、Oracle 11g版、Dell G3電腦。
1.宣告變數的3種方式
##1.宣告變數的3種方式
依照資料型別的宣告方式區分
方式一:直接宣告資料型別
格式:變數名稱資料型別(大小)V_START_DATE VARCHAR2(19);
v_num number;
說明:
設定為字串型別時,需要指定大小,否則報錯;
變數的宣告必須在"begin"關鍵字之前進行。
--错误用法 BEGIN v_sql varchar2(100) := 'SELECT ORGSEQ FROM BASE_ORG_INFO where orgcode=to_char(410621101233)';方式二:使用%TYPE宣告
#格式:變數名稱表名.欄位名稱%TYPE
意義:該變數的資料型別與指定資料表的指定欄位的資料型別一致
V_ORGSEQ BASE_ORG_INFO.ORGSEQ%TYPE;
方式三:使用%ROWTYPE宣告 格式:變數名稱表名%ROWTYPE# 格式:變數名稱表名%ROWTYPE
」。資料類型與指定表格的指定行記錄(所有欄位)的資料類型一致--VIRTUAL_CARD表整行数据
V_ROW_VIRTUAL_CARD VIRTUAL_CARD%ROWTYPE;
小結:
在儲存過程中,宣告變數時,不需要使用關鍵字" DECLARE";
變數不區分大小寫;
變數在使用前必須宣告。
2.變數賦值的3種方式
方式一:直接賦值,使用":="
使用條件:適用於宣告變數的前2種方式。
V_ORGID := '110';
說明:
變數後面跟不能直接是sql語句,sql不會執行,可以參考方式三。--错误用法 V_ORGSEQ := SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO; --正确用法 V_ORGSEQ := 'SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO';
變數的宣告和賦值可以一塊進行。
--正确用法 v_sql varchar2(100) := 'SELECT ORGSEQ FROM BASE_ORG_INFO where orgcode=to_char(410621101233)'; BEGIN /* 具体业务 */ END;方式二:select 表格欄位into 變數from 表
變形一:查詢指定表的一個指定欄位
使用條件:
適用於宣告變數的前2種方式可以使用--根据医疗机构ID查询对应的父机构的机构序列
SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO
WHERE ORGID =
(SELECT PARENTORGID FROM BASE_ORG_INFO WHERE ORGID = V_ORGID);
變形二:查詢指定表格的所有欄位
使用條件:只適用於聲明變數的第3種方式
--将id=5120的VIRTUAL_CARD表数据赋值给变量V_ROW_VIRTUAL_CARD SELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T where t.id = 5120;
說明:
# 查詢結果只能傳回一筆記錄;
# ##
#的表欄位必須是該表的所有欄位。 方式三:execute immediate sql語句字串into 變數######
declare/* 存储过程,不需要声明 */ v_sql varchar2(100); V_ORGSEQ varchar2(100); begin v_sql := 'SELECT ORGSEQ FROM BASE_ORG_INFO where orgcode=to_char(410621101233)'; --V_ORGSEQ赋值 execute immediate v_sql INTO V_ORGSEQ; --打印结果 DBMS_OUTPUT.put_line(V_ORGSEQ); END;#########3 .變數的呼叫############ 一般來說,變數只有這3種使用場景:賦值、邏輯判斷、算術運算;###### 說明:###不能用作查詢列######
--错误调用 select V_ORGSEQ from dual;### 使用%ROWTYPE宣告的變數如何呼叫? ###### 利用"變數名.表格欄位"的方式可以取到該表中指定行(傳回行)的指定列(任意列)所代表的資料。 ###
--V_ROW_VIRTUAL_CARD赋值 SELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T where t.id = 5120; --调用 DBMS_OUTPUT.put_line(V_ROW_VIRTUAL_CARD.ID);###推薦教學:《###Oracle教學###》###
以上是oracle預存程序中賦值給變數的方法有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!