为什么用C#  动态生成的触发器编译通不过,同样的代码,放到 PL/SQL里可以编译通过,
很简单的触发器,测试一下CREATE OR REPLACE TRIGGER "TRG_T_QUERY_CONDITION_DEF" BEFORE
INSERT ON "T_QUERY_CONDITION_DEF" FOR EACH ROW
BEGIN
NULL;
END;
但第一次编辑的时候显示 这个错误
TRIGGER ZJJCJG.TRG_T_QUERY_CONDITION_DEF 编译错误错误: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

解决方案 »

  1.   


                    sb = new StringBuilder();
                    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("NULL;");
                    sb.AppendLine("END;");
                    Db.dataSourceOracle.ExecuteNonQuery(sb.ToString());
      

  2.   

    貌似需要用EXECUTE IMMEDIATE执行
      

  3.   

    可以了,原来不能用 AppendLine