尝试在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)
);
我唯一猜测导致这种情况的原因是';'分解两个插入语句的字符。是的我明白我应该创建一个触发器,但我已经读过这个也可以。如果我删除';'我收到有关查询未正确结束的错误。任何帮助将不胜感激!!
答案 0 :(得分:0)
1)“ORA-00911”表示“无效字符”
2)是的,“;”是一个很好的候选人。问:您可以在单个ASP命令中执行两个SQL插入吗?我不知道;)
3)建议:将其分解为一个 SQL语句,然后查看问题是否消失。
4)如果是这样,您的选择包括:
a)在与ASP代码相同的位置发出两个SQL语句(这就是我要做的,但我不知道它是否是你程序中的一个选项)
b)使用触发器(绝对不我要做的事情)
c)创建一个PL / SQL存储过程并从ASP调用它而不是原始SQL(可以说是最好的选择)
IMHO ..