ORA-00911:在数据源上使用Insert命令时

时间:2012-10-15 05:34:26

标签: c# asp.net datasource ora-00911

尝试在asp.net中设置插入语句。

我的双线insertCommand如下:

InsertCommand="INSERT INTO DVD(DVD_ID, DVD_TITLE, RENTAL_COST, RATING, COVER_IMAGE) VALUES (DVD_SEQ.NEXTVAL, :DVD_TITLE, :RENTAL_COST, :RATING, :COVER_IMAGE);
        INSERT INTO DVD_GENRE(DVD_ID, GENRE_ID) VALUES (DVD_SEQ.CURRVAL, :GENRE_ID)" 

插入参数的代码是:

<InsertParameters>
    <asp:ControlParameter ControlID="titleBox" DefaultValue="TITLEDEFAULT" 
        Name="DVD_TITLE" PropertyName="Text" Type="String" />
    <asp:ControlParameter ControlID="rentalBox" DefaultValue="99" 
        Name="RENTAL_COST" PropertyName="Text" Type="String" />
    <asp:ControlParameter ControlID="ratingList" DefaultValue="25" Name="RATING" 
        PropertyName="SelectedValue" Type="Int32" />
    <asp:Parameter Name="COVER_IMAGE" Type="String" DefaultValue="0.jpg" />
    <asp:ControlParameter ControlID="genreList" Name="GENRE_ID" 
        PropertyName="SelectedValue" />
</InsertParameters>

我插入的OracleDB表(DVD)是:

create table dvd_genre
(
dvd_id integer not null,
genre_id integer not null,
primary key (dvd_id, genre_id),
foreign key(dvd_id) references DVD(dvd_id),
foreign key(genre_id) references GENRE(genre_id)
);

我唯一猜测导致这种情况的原因是';'分解两个插入语句的字符。是的我明白我应该创建一个触发器,但我已经读过这个也可以。如果我删除';'我收到有关查询未正确结束的错误。任何帮助将不胜感激!!

1 个答案:

答案 0 :(得分:0)

1)“ORA-00911”表示“无效字符”

2)是的,“;”是一个很好的候选人。问:您可以在单个ASP命令中执行两个SQL插入吗?我不知道;)

3)建议:将其分解为一个 SQL语句,然后查看问题是否消失。

4)如果是这样,您的选择包括:

a)在与ASP代码相同的位置发出两个SQL语句(这就是我要做的,但我不知道它是否是你程序中的一个选项)

b)使用触发器(绝对我要做的事情)

c)创建一个PL / SQL存储过程并从ASP调用它而不是原始SQL(可以说是最好的选择)

IMHO ..