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
21089 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!

sumber:php.cn
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