我有一个包含多个insert语句的Rich Text Box,我想要做的是运行我的richtextbox中的所有insert语句。但是有以下错误。
讯息= ORA-00911:无效字符 当我打开Text可视化工具以查看richTextBox.Text表达式时,我的值位于richTextBox.Text中,如下所示:
INSERT INTO TBLMESS (ID, TEXT) VALUES ('1','hello');
INSERT INTO TBLMESS (ID, TEXT) VALUES ('2','hello');
INSERT INTO TBLMESS (ID, TEXT) VALUES ('3','hello');
INSERT INTO TBLMESS (ID, TEXT) VALUES ('4','hello');
INSERT INTO TBLMESS (ID, TEXT) VALUES ('5','hello');
INSERT INTO TBLMESS (ID, TEXT) VALUES ('6','hello');
代码:
conn1.Open();
OracleCommand cmd = new OracleCommand(richTextBoxScript.Text, conn1);
cmd.ExecuteNonQuery();
答案 0 :(得分:0)
那么我们如何在一个命令中运行多个语句?嗯,合理的第一个猜测可能是将多个语句直接添加到我们的SQL字符串中,并将它们与典型的“;”分隔符分开:
var sql = @"INSERT INTO TEST_TABLE( NKEY, STEXT ) VALUES( 123, 'HELLO WORLD' );
INSERT INTO TEST_TABLE( NKEY, STEXT ) VALUES( 456, 'HELLO AGAIN' );";
不幸的是,这不适用于Oracle;尝试它,你会得到一个看起来像这样的错误:
Oracle.DataAccess.Client.OracleException:ORA-00911:无效字符。
信息性,不是吗?幸运的是,解决方案非常简单:在匿名PL / SQL块中包含语句:
var sql = @"BEGIN
INSERT INTO TEST_TABLE( NKEY, STEXT ) VALUES( 123, 'HELLO WORLD' );
INSERT INTO TEST_TABLE( NKEY, STEXT ) VALUES( 456, 'HELLO AGAIN' );
END;";
真的可以这么简单吗?嗯,是的