Rumah > pangkalan data > Oracle > Apakah kaedah untuk memberikan nilai kepada pembolehubah dalam prosedur tersimpan Oracle?

Apakah kaedah untuk memberikan nilai kepada pembolehubah dalam prosedur tersimpan Oracle?

青灯夜游
Lepaskan: 2022-01-25 16:57:38
asal
21202 orang telah melayarinya

Kaedah untuk memberikan nilai kepada pembolehubah: 1. Gunakan ":=" untuk menetapkan nilai secara langsung, sintaksnya ialah "nama pembolehubah:=value;" 2. Gunakan medan "pilih jadual ke dalam pembolehubah dari penyataan" jadual; 3. Gunakan penyataan " laksanakan rentetan pernyataan sql segera ke dalam pembolehubah".

Apakah kaedah untuk memberikan nilai kepada pembolehubah dalam prosedur tersimpan Oracle?

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi Oracle 11g, komputer Dell G3.

Cara mengisytiharkan dan menetapkan pembolehubah dalam prosedur tersimpan Oracle

1. 3 cara untuk mengisytiharkan pembolehubah

Bezakan mengikut kaedah pengisytiharan jenis data

Kaedah 1: Istihar terus jenis data

Format: jenis data nama ubah (saiz)

V_START_DATE VARCHAR2(19);
v_num number;
Salin selepas log masuk

 Nota:

Apabila ditetapkan kepada jenis rentetan, saiz perlu ditentukan, jika tidak, ralat akan dilaporkan; pengisytiharan pembolehubah mestilah dalam kekunci "mulakan" Jalankan sebelum perkataan.

Kaedah 2: Gunakan pernyataan %TYPE

--错误用法
BEGIN
v_sql varchar2(100) := 'SELECT ORGSEQ FROM BASE_ORG_INFO where orgcode=to_char(410621101233)';
Salin selepas log masuk

Format: nama jadual nama pembolehubah. Nama medan %TYPEMaksud: Jenis data pembolehubah adalah konsisten dengan jenis data medan yang ditentukan dalam jadual yang ditentukan

Kaedah 3: Gunakan pernyataan %ROWTYPE

Format: nama pembolehubah nama jadual % ROWTYPE
V_ORGSEQ BASE_ORG_INFO.ORGSEQ%TYPE;
Salin selepas log masuk

Maksud : Jenis data pembolehubah ini konsisten dengan jenis data rekod baris yang ditentukan (semua medan) jadual yang ditentukan

Ringkasan:

--VIRTUAL_CARD表整行数据
V_ROW_VIRTUAL_CARD VIRTUAL_CARD%ROWTYPE; 
Salin selepas log masuk
Dalam prosedur tersimpan, apabila mengisytiharkan pembolehubah, Tidak perlu menggunakan kata kunci "DECLARE"; ;

Pembolehubah mesti digunakan sebelum menggunakan pernyataan.

2 cara penugasan berubah

Kaedah 1: Tugasan langsung, gunakan ":="

Syarat penggunaan: terpakai pada dua cara pertama untuk mengisytiharkan pembolehubah.

Penjelasan:

Pembolehubah tidak boleh diikuti secara langsung dengan penyataan sql tidak akan dilaksanakan Anda boleh merujuk kepada kaedah tiga.

 

Pengisytiharan pembolehubah dan tugasan boleh dilakukan bersama.
V_ORGID :=  '110';  
Salin selepas log masuk

Kaedah 2: pilih medan jadual ke dalam pembolehubah daripada jadual

--错误用法
V_ORGSEQ := SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO;
--正确用法
V_ORGSEQ := 'SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO';
Salin selepas log masuk
Variasi 1: Tanya medan tertentu bagi jadual yang ditentukan

Syarat penggunaan: Dua cara pertama untuk mengisytiharkan pembolehubah boleh digunakan

--正确用法
v_sql varchar2(100) := 'SELECT ORGSEQ FROM BASE_ORG_INFO where orgcode=to_char(410621101233)';
BEGIN
 /* 具体业务 */
END;
Salin selepas log masuk

Variasi 2: Tanya semua medan jadual yang ditentukan

Syarat penggunaan:

Hanya terpakai kepada cara ketiga untuk mengisytiharkan pembolehubah

Penerangan:

--根据医疗机构ID查询对应的父机构的机构序列
SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO
 WHERE ORGID =
       (SELECT PARENTORGID FROM BASE_ORG_INFO WHERE ORGID = V_ORGID);
Salin selepas log masuk

Hasil pertanyaan hanya boleh mengembalikan satu rekod;

Medan jadual yang ditanya mestilah semua medan dalam jadual.

Contoh ralat:
--将id=5120的VIRTUAL_CARD表数据赋值给变量V_ROW_VIRTUAL_CARD
SELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T where t.id = 5120;
Salin selepas log masuk

Kaedah 3: laksanakan rentetan pernyataan sql segera ke dalam pembolehubah

3. Memanggil pembolehubah

--错误举例一:查询的是所有表记录
SELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T;
--错误举例二:查询的是该表的多个字段
SELECT t.id,t.name INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T;  
Salin selepas log masuk
Secara umumnya, pembolehubah hanya mempunyai tiga senario penggunaan ini: tugasan, pertimbangan logik, operasi aritmetik; digunakan sebagai lajur pertanyaan

Bagaimana untuk memanggil pembolehubah yang diisytiharkan menggunakan %ROWTYPE?
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;
Salin selepas log masuk

Menggunakan kaedah "nama pembolehubah. medan jadual", anda boleh mendapatkan data yang diwakili oleh lajur yang ditentukan (mana-mana lajur) baris yang ditentukan (baris kembali) dalam jadual. Tutorial yang disyorkan: "Tutorial Oracle

"

Atas ialah kandungan terperinci Apakah kaedah untuk memberikan nilai kepada pembolehubah dalam prosedur tersimpan Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan