逐行读取richtextBox以便运行oracle命令

本文关键字:运行 oracle 命令 读取 richtextBox 逐行 | 更新日期: 2023-09-27 17:50:22

我有一个包含多个插入语句的富文本框,我想做的是在我的richtextbox内运行所有插入语句。但有以下错误。

Message=ORA-00911:无效字符 当我打开文本可视化器查看richTextBox。我的值在richTextBox中。如下文字:

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();

逐行读取richtextBox以便运行oracle命令

那么我们如何在一个命令中运行多个语句呢?那么,一个合理的初步猜测可能是直接向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。oracle异常:ORA-00911: invalid character.

内容丰富,不是吗?幸运的是,解决方案非常简单:将语句包围在一个匿名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;";

真的有那么简单吗?是的