這種情況下,如何轉為儲存過程呢?以上面的兩個動態為例,在儲存過程中實現如下:
create or replace procedure my_procedure1(tablename in varchar2,studentname in varchar2, my_cursor1 out
my_procedure_pkg.ref_cursor) as
sql varchar2(1000);
begin
sql :='select * from ' || my_procedure1.tablename || ' where name=' || my_procedure1.studentname;
open my_procedure1.my_cursor1 for sql;
end my_procedure1;
如果不是 select * 而是delete from ....那麼儲存過程需要稍作改變,相應部分改為
execute immediately sql;
上面第二個sql的儲存過程如下:
create or replace procedure my_procedure2(ifbynmame in varchar2,my_cursor2 out my_procedure_pkg.ref_cursor) as
begin
if(ifbyname="true") then
open my_cursor2 for
select * from student where age='18' and name='fengfei';
else
open my_cursor2 for
select * from student where age='18';
end my_procedure2;
**都是臨時手寫的,所以可能有錯誤。
oracle 在儲存過程中定義動態sql
表結構 create table item prop pid integer,name varchar2 20 is key prop integer,is sale prop integer,is color prop integer,parent pid integer,parent vid v...
在儲存過程中實現事務
在圖書館管理系統中系統管理員可以進行的操作有 借 還 新增 刪除 修改圖書或新增 刪除 修改讀者等,很多的操作都涉及到多個表的進行,我們一定要保持資料的一致性。如 刪除讀者 操作,會在讀者表 reader 中進行讀者的刪除,該讀者刪除後,借書表 reader book 也沒有必要再保留該讀者的借書記...
通過游標在SQL儲存過程中迴圈
今天有個需求要寫乙個儲存過程,需要從乙個表中讀取資料到另外乙個表中,由於是很多行的資料,所以需要迴圈,我琢磨了一下,使用了游標,至於使用游標的好壞,還請大家指點,先建立兩個測試表吧 create table testa id intidentity userchname nvarchar 50 us...