这个我也遇到公平,我当时把语句赋值给了一个字符串,大概是这样的
v_sql varchar(100)
v_sql:='select * from select * from CHEMICALLIST where id='+RID;
然后再执行就可以了。(执行那个exec...忘了怎么写了,呵呵)
v_sql varchar(100)
v_sql:='select * from select * from CHEMICALLIST where id='+RID;
然后再执行就可以了。(执行那个exec...忘了怎么写了,呵呵)
你要显示直接在query里跑好了
要使用或者要返回值就用cursor 或者 select into
BEGIN
select * from CHEMICALLIST where id=Rid;
END DT_SELECT_CHEMICALLIST;
不知道楼主这么做要达到什么目的?
在过程中要写成
类似于:
str number;
execute immediate 'select xxx from CHEMICALLIST where id='||RID into str;
的形式 就可以了!
你的寫法在SQLSERVER中是可以的,但在Oracle中你只能返回一個引用的游標
具體寫法:
先建一個包
create or replace package packname is
begin
type dataset is ref cursor
end packname;
再建存儲過程
CREATE OR REPLACE PROCEDURE DT_SELECT_CHEMICALLIST (Rid IN NUMBER,dataset out packname.dataset) IS
BEGIN
open dataset for select * from CHEMICALLIST where id=Rid;
END DT_SELECT_CHEMICALLIST;
你的寫法在SQLSERVER中是可以的,但在Oracle中你只能返回一個引用的游標
具體寫法:
先建一個包
create or replace package packname is
begin
type dataset is ref cursor
end packname;
再建存儲過程
CREATE OR REPLACE PROCEDURE DT_SELECT_CHEMICALLIST (Rid IN NUMBER,dataset out packname.dataset) IS
BEGIN
open dataset for select * from CHEMICALLIST where id=Rid;
END DT_SELECT_CHEMICALLIST;————————————————————————
然后我再调用存储过程就可以了是吗?
begin
type dataset is ref cursor
end packname;
建游标还报错啊警告: 创建的过程带有编译错误。