大家看看我的这么“过程”为什么是invalid,急!
CREATE OR REPLACE PROCEDURE "JC"."PROCEDURE_CURRENT"
(coltime_in in varchar2, userid_in in varchar2)
as
begin
delete from temp_current;
commit;
insert into temp_current
select * from ccurrent3
where userid = userid_in and
to_char(coldate,'yymmdd') = coldate_in;
commit;
end;
问题点数:50、回复次数:14Top
1 楼sea_maid(海心)回复于 2003-08-02 10:45:55 得分 0
在线等!Top
2 楼sea_maid(海心)回复于 2003-08-02 10:49:23 得分 0
这两条语句单独在sqlplus里面运行都没有问题。
up!Top
3 楼kerisyml(魂之利刃)回复于 2003-08-02 10:55:36 得分 10
在存储过程中作这些语句需要用动态sql来执行
如str!='delete from temp_current';
EXECUTE IMMEDIATE str;
以下的类似,你可以查查动态sqlTop
4 楼sea_maid(海心)回复于 2003-08-02 11:31:15 得分 0
那么您能不能给个例子,
我这么“过程”应该怎么写?
先谢了!Top
5 楼gladness(gladness)回复于 2003-08-02 12:02:50 得分 0
感觉把双引号去掉,前面的JC也可以去掉
CREATE OR REPLACE PROCEDURE PROCEDURE_CURRENT
后面不变Top
6 楼beckhambobo(beckham)回复于 2003-08-02 12:42:59 得分 5
coldate_in这个从哪来的?参数没有定义Top
7 楼sea_maid(海心)回复于 2003-08-02 12:49:26 得分 0
CREATE OR REPLACE PROCEDURE PRO_TEMP_CURRENT (
coltime_in in varchar2,
userid_in in varchar2 )
as
v_cursorID integer;
v_insertstmt varchar2(100);
begin
v_cursorID := DBMS_SQL.OPEN_CURSOR;
v_insertstmt :=
'insert into temp_current select * from ccurrent3
where userid = : uin and
to_char(coldate,''yymmdd'') = : colin';
DBMS_SQL.PARSE (v_cursorID, v_insertstmt, DBMS_SQL.V7);
DBMS_SQL.BIND_VARIABLE (v_cursorID, ': uin', userid_in);
DBMS_SQL.BIND_VARIABLE (v_cursorID, ': colin', coltime_in);
DBMS_SQL.EXECUTE (v_cursorID);
DBME_SQL.CLOSE_CURSOR (v_cursorID);
exception
when others then
DBMS_SQL.CLOSE_CURSOR (v_cursorID);
raise;
end;
我写成这样还是invalid,为什么?请各位指点!
Top
8 楼Michaelyfj(星星还是那颗星星)回复于 2003-08-02 13:13:01 得分 5
重新在SQL/PLUS中编译,用show err查看哪行错误,错误信息是什么?Top
9 楼beckhambobo(beckham)回复于 2003-08-02 13:42:55 得分 10
CREATE OR REPLACE PROCEDURE PROCEDURE_CURRENT(coltime_in in varchar2, userid_in in varchar2)
as
begin
delete from temp_current;
insert into temp_current
(select * from ccurrent3
where userid = userid_in and
to_char(coldate,'yymmdd') =coltime_in);
end;
Top
10 楼shuipipi(水皮皮)回复于 2003-08-02 14:06:18 得分 5
同意波波的!
泥的过程里面把一个变量名写错了:【 coltime_in § coldate_in 】Top
11 楼nbnasom(阿飞)回复于 2003-08-02 14:48:24 得分 10
CREATE OR REPLACE PROCEDURE JC.PROCEDURE_CURRENT
(coldate_in in varchar2, userid_in in varchar2)
as
ls_sql varchar2(1000);
begin
ls_sql := 'delete from temp_current';
EXECUTE IMMEDIATE ls_sql;
commit;
insert into temp_current
select * from ccurrent3
where userid = userid_in and
to_char(coldate,'yymmdd') = coldate_in;
commit;
end;
/Top
12 楼David1289(David)回复于 2003-08-02 15:17:19 得分 5
coltime_in in varchar2
和
coldate_in
?
Top
13 楼sea_maid(海心)回复于 2003-08-02 15:23:03 得分 0
CREATE OR REPLACE PROCEDURE "JC"."PROCEDURE_CURRENT"
(coltime_in in varchar2, userid_in in varchar2)
as
begin
delete from temp_current;
commit;
insert into temp_current
select * from ccurrent3
where userid = userid_in and
to_char(coldate,'yymmdd') = coldate_in;
commit;
end;
还是这么莫名其妙好了,哈哈!Top
14 楼sea_maid(海心)回复于 2003-08-02 15:26:14 得分 0
变量名错了,不好意思 :(Top
相关问题
- 为什么编译过程中总出现错误????(急)
- 急!!为什么这个存储过程不能调用?
- 请问为什么我在 oracle 写的 存储过程都是 invalid 要如何才能改为 valid 呢
- 【请问】存储过程本来是VALID,为什么运行后从VALID变成INVALID
- 在存储过程中应该能drop table吧?为什么这个简单的过程编译无效,急
- 急!!!为什么asp不能得到从存储过程中返回的值?
- open存储过程时,出现EDBEngineError,Invalid Parameter错误,急!
- 分布式怎么这么麻烦啊,我想用local的存储过程调用remote的存储过程,为什么总出错啊???????急急急
- 为什么不行?关于WindowProc过程。
- 为什么存储过程不成功???




