【问题标题】:nextval function in oracle queryoracle查询中的nextval函数
【发布时间】:2016-06-24 15:44:15
【问题描述】:

我有两个 oracle 查询。在我插入的第一个查询中,我插入 Sequesnce Next 值(nextval)然后我需要将它插入到下一个查询中。中间我需要返回当前值(currval)。

错误是:
ORA-01036: 非法变量名/编号

我认为这发生在 currval 函数中? 查询

 string query = @"INSERT INTO TBL_TICKET_TYPE(NewsID,NAME) 
                                 VALUES(newsid.nextval,:NAME)";

            cmd = db.GetSqlStringCommand(query);

            db.AddInParameter(cmd, "NAME", DbType.String, TicketTypes.NAME);

            db.ExecuteNonQuery(cmd);

            //String query3 = "Select newsid.currval from dual";


            String query2 = "INSERT INTO TBL_TICKET_TYPE_TAX(TICKETTYPEID,TAXID)VALUES(newsid.currval,:LINENO)";
            cxd = db.GetSqlStringCommand(query);
            db.AddInParameter(cxd, "LINENO", DbType.Int32, 1);
            db.ExecuteNonQuery(cxd);

【问题讨论】:

    标签: c# sql asp.net oracle


    【解决方案1】:

    您需要做的是从查询开始以获取newsid.nextval 并将结果放入变量中:

    SELECT newsid.nextval FROM dual;
    

    然后你可以在query(代替newsid.nextval)和query2(代替newsid.currval)中使用这个变量。

    希望这会有所帮助。

    【讨论】:

    • 这种方式存在问题,因为每次运行都会将索引增加1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多