CREATE OR REPLACE TRIGGER "TRG_T_QUERY_LIST_CATEGORY_ITEM" BEFORE
INSERT ON "T_QUERY_LIST_CATEGORY_ITEM" FOR EACH ROW
BEGIN
IF :NEW.CATEGORY_ITEM_ID > 0 THEN
NULL;
ELSE
SELECT SQE_T_QUERY_LIST_CATEGORY_ITEM.NEXTVAL
INTO :NEW.CATEGORY_ITEM_ID
FROM DUAL;
END IF;
END;
这个触发器我是用程序生成的,但编译不通过,提示
TRIGGER ZJJCJG.TRG_T_QUERY_LIST_CATEGORY_ITEM 编译错误错误:PLS-00103: 出现符号 ""在需要下列之一时:
begin case declare exit for
goto if loop mod null pragma raise return select update while
with <an identifier> <a double-quoted delimited-identifier>
<a bind variable> << close current delete fetch lock insert
open rollback savepoint set sql execute commit forall merge
pipe
符号 "" 被忽略。
行:3
文本:BEGIN错误:PLS-00103: 出现符号 ""在需要下列之一时:
begin case declare exit for
goto if loop mod null pragma raise return select update while
with <an identifier> <a double-quoted delimited-identifier>
<a bind variable> << close current delete fetch lock insert
open rollback savepoint set sql execute commit forall merge
pipe
行:4
文本:IF :NEW.CATEGORY_ITEM_ID>0 THEN
用pl/sql直接编译提示这个错误,但打开编辑再编译就可以了,看代码是一模一样的
SELECT SQE_T_QUERY_LIST_CATEGORY_ITEM.NEXTVAL
INTO :NEW.CATEGORY_ITEM_ID
FROM DUAL;
--改成
:NEW.CATEGORY_ITEM_ID:= SQE_T_QUERY_LIST_CATEGORY_ITEM.NEXTVAL;
create or replace
TRIGGER "TRG_T_QUERY_LIST_CATEGORY_ITEM" BEFORE
INSERT ON "EMP" FOR EACH ROW
BEGIN
IF :NEW.EMPNO > 0 THEN
NULL;
ELSE
SELECT t_x_seq.NEXTVAL
INTO :NEW.EMPNO
FROM DUAL;
END IF;
END;那个,SQE_T_QUERY_LIST_CATEGORY_ITEM对吗?不是SEQ_T...?
string newTirger = ("TRG_" + TableName).ToUpper();
sb.AppendLine("CREATE OR REPLACE TRIGGER \"" + newTirger + "\" BEFORE");
sb.AppendLine("INSERT ON \"" + TableName + "\" FOR EACH ROW");
sb.AppendLine("BEGIN");
sb.AppendLine(" IF :NEW."+IdentityField+" > 0 THEN");
sb.AppendLine(" NULL;");
sb.AppendLine(" ELSE");
sb.AppendLine(" SELECT " + newSequence + ".NEXTVAL");
sb.AppendLine(" INTO :NEW." + IdentityField + "");
sb.AppendLine(" FROM DUAL;");
sb.AppendLine(" END IF;");
sb.AppendLine("END;");
TRIGGER "TRG_T_QUERY_LIST_CATEGORY_ITEM" BEFORE
INSERT ON "EMP" FOR EACH ROW
BEGIN
IF :NEW.EMPNO a<= 0 THEN
SELECT t_x_seq.NEXTVAL
INTO :NEW.EMPNO
FROM DUAL;
END IF;
END;