请问这个存储过程哪错了,很急啊。100分,解决给分
CREATE OR REPLACE PROCEDURE DT_SELECT_CHEMICALLIST (Rid IN NUMBER) IS
BEGIN
select * from CHEMICALLIST where id=Rid;
END DT_SELECT_CHEMICALLIST;
问题点数:100、回复次数:9Top
1 楼yuewh491(帅的惊动了党)回复于 2005-11-04 13:21:46 得分 0
总报
警告: 创建的过程带有编译错误。
这个错Top
2 楼tjandy(双桅船)回复于 2005-11-04 13:27:57 得分 10
这个我也遇到公平,我当时把语句赋值给了一个字符串,大概是这样的
v_sql varchar(100)
v_sql:='select * from select * from CHEMICALLIST where id='+RID;
然后再执行就可以了。(执行那个exec...忘了怎么写了,呵呵)Top
3 楼Alkeen()回复于 2005-11-04 13:32:34 得分 10
select语句没法在proc里跑
你要显示直接在query里跑好了
要使用或者要返回值就用cursor 或者 select into
Top
4 楼wfeng7907(无风)回复于 2005-11-04 13:35:23 得分 10
CREATE OR REPLACE PROCEDURE DT_SELECT_CHEMICALLIST (Rid IN NUMBER) IS
BEGIN
select * from CHEMICALLIST where id=Rid;
END DT_SELECT_CHEMICALLIST;
不知道楼主这么做要达到什么目的?
在过程中要写成
类似于:
str number;
execute immediate 'select xxx from CHEMICALLIST where id='||RID into str;
的形式 就可以了!Top
5 楼chenyunfan(云帆)回复于 2005-11-04 13:35:23 得分 70
你是想從存儲過程返回結果集嘛?
你的寫法在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;
Top
6 楼yuewh491(帅的惊动了党)回复于 2005-11-04 13:49:56 得分 0
你是想從存儲過程返回結果集嘛?
你的寫法在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;
————————————————————————
然后我再调用存储过程就可以了是吗?Top
7 楼chenyunfan(云帆)回复于 2005-11-04 13:54:46 得分 0
是的Top
8 楼yuewh491(帅的惊动了党)回复于 2005-11-04 13:57:01 得分 0
create or replace package packname is
begin
type dataset is ref cursor
end packname;
建游标还报错啊
警告: 创建的过程带有编译错误。Top
9 楼yuewh491(帅的惊动了党)回复于 2005-11-04 14:27:52 得分 0
先结了Top




