请有人帮助一个很新手的Oracle人。我在Oracle中创建了一个存储过程来删除日期范围分区。我用来创建程序的代码是:Oracle sql存储过程数据参数丢失单引号
SQL> CREATE OR REPLACE PROCEDURE NEW_EVENT_DELETE(palterdate in VARCHAR2) AS
2 begin
3 execute immediate 'ALTER TABLE ROSUSER.EVENT DROP PARTITION FOR(TO_DATE(palterdate, ''DD-MON-YYYY'')) UPDATE INDEXES';
4 end NEW_EVENT_DELETE;
5/
编译没有问题,但是当我尝试使用运行程序:
ERROR at line 1:
ORA-14755: Invalid partition specification for FOR VALUES clause.
ORA-06512: at "ROSUSER.NEW_EVENT_DELETE", line 3
ORA-06512: at line 1
:
exec NEW_EVENT_DELETE('03-FEB-2014');
它回来如果我使用命令:
ALTER TABLE ROSUSER.EVENT DROP PARTITION FOR(TO_DATE('03-FEB-2014', 'DD-MON-YYYY'));
然后它工作。在我看来,输入日期周围的单引号集正在丢失,因为如果我试图在日期周围没有引号的情况下运行ALTER命令,那么它就是我得到的同样的错误消息。
任何想法我做错了什么?
感谢您的任何帮助
尝试NEW_EVENT_DELETE(“03-FEB-2014”);而不是单个'' – Unlockedluca 2015-02-10 15:37:50
@Unlockedluca:Oracle不会使用这样的双引号。单引号是正确的。 – Ditto 2015-02-10 15:40:29