我想在oracle 的存储过程中直接返回结果集。如在sql server中的实现 Create Procedure sp_GetOrders
as
Select * from Orders;
应该怎么去实现。最好是给一个完整的存储过程的例子。
目的:是在.net中调用存储过程返回一个结果集,我们不允许在程序中嵌入sql代码
所有数据访问逻辑全部用存储过程实现。
调试成功及结贴。
as
Select * from Orders;
应该怎么去实现。最好是给一个完整的存储过程的例子。
目的:是在.net中调用存储过程返回一个结果集,我们不允许在程序中嵌入sql代码
所有数据访问逻辑全部用存储过程实现。
调试成功及结贴。
http://expert.csdn.net/Expert/topic/2058/2058571.xml?temp=.5344965
http://expert.csdn.net/Expert/topic/1919/1919597.xml?temp=.7810785
AS
TYPE myrctype IS REF CURSOR; PROCEDURE get (p_id NUMBER, p_rc OUT myrctype);
END pkg_test;
/CREATE OR REPLACE PACKAGE BODY pkg_test
AS
PROCEDURE get (p_id NUMBER, p_rc OUT myrctype)
IS
sqlstr VARCHAR2 (500);
BEGIN
IF p_id = 0 THEN
OPEN p_rc FOR
SELECT ID, NAME, sex, address, postcode, birthday
FROM student;
ELSE
sqlstr :=
'select id,name,sex,address,postcode,birthday
from student where id=:w_id';
OPEN p_rc FOR sqlstr USING p_id;
END IF;
END get;
END pkg_test;
/
AS
TYPE myrctype IS REF CURSOR; PROCEDURE get (p_id NUMBER, p_rc OUT myrctype);
END pkg_test;
/CREATE OR REPLACE PACKAGE BODY pkg_test
AS
PROCEDURE get (p_id NUMBER, p_rc OUT myrctype)
IS
sqlstr VARCHAR2 (500);
BEGIN
IF p_id = 0 THEN
OPEN p_rc FOR
SELECT ID, NAME, sex, address, postcode, birthday
FROM student;
ELSE
sqlstr :=
'select id,name,sex,address,postcode,birthday
from student where id=:w_id';
OPEN p_rc FOR sqlstr USING p_id;
END IF;
END get;
END pkg_test;
列名:num(number),name(varchar2),sex(char),major(varchar2)建立过程:
CREATE OR REPLACE PACKAGE pkg_test
AS
TYPE myrctype IS REF CURSOR;
END pkg_test;
/CREATE PROCEDURE PRO_SLE(INPUT1 in integer,INPUT2 in VARCHAR2,p_rc out pkg_test.myrctype)
AS
begin
open p_rc for 'SELECT * FROM TEST WHERE AA='||INPUT1||' AND instr(BB,'||INPUT2||')>0';
end;
/
执行过程:
declare
v_num TEST_1.num%type;
v_name test_1.name%type;
v_sex test_1.sex%type;
v_major test_1.major%type;
v_rc pkg_test.myrctype;
begin
PRO_SLE(1,'1',v_rc);
loop
fetch v_rc into v_num,v_name,v_sex,v_major;
exit when v_rc%notfound;
dbms_output.put_line(v_num||v_name||v_sex||v_major);
end loop;
end;