首頁 >資料庫 >Oracle >oracle預存程​​序中賦值給變數的方法有哪些

oracle預存程​​序中賦值給變數的方法有哪些

青灯夜游
青灯夜游原創
2022-01-25 16:57:0821086瀏覽

賦值給變數的方法:1、使用「:=」直接賦值,語法「變數名:=值;」;2、使用「select 表欄位into 變數from 表」語句;3、使用「 execute immediate sql語句字串into 變數」語句。

oracle預存程​​序中賦值給變數的方法有哪些

本教學操作環境:Windows7系統、Oracle 11g版、Dell G3電腦。

Oracle預存程​​序變數宣告與賦值的方法

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;

  說明:

#  查詢結果只能傳回一筆記錄;

#  ##  

#的表欄位必須是該表的所有欄位。

  錯誤範例:

--错误举例一:查询的是所有表记录
SELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T;
--错误举例二:查询的是该表的多个字段
SELECT t.id,t.name INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T;  

方式三: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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn