当前位置:  开发笔记 > 数据库 > 正文

如何拆分ADO.NET的Oracle sql语句

如何解决《如何拆分ADO.NET的Oraclesql语句》经验,为你挑选了1个好方法。

拆分SQL语句以发送到Oracle ADO.NET客户端的正确方法是什么?例如,假设您在文本文件中包含以下代码并希望执行以下语句:

CREATE TABLE foo (bar VARCHAR2(100));
INSERT INTO foo (bar) VALUES('one');
INSERT INTO foo (bar) VALUES('two');

我相信尝试在一个命令中发送所有这些将导致Oracle抱怨";".我的第一个想法是分裂";" 字符,并一次发送一个.

但是,存储过程也可以包含分号,那么我将如何制作它以便拆分例程将整个存储过程保持在一起?是否还需要查找开头/结尾语句,或"/"?

ODP.NET和Micrsoft Oracle Provider之间在这些方面有什么不同吗?



1> Tony Andrews..:

如果没有DDL,您可以通过使用BEGIN和END包围语句来创建匿名PL/SQL块:

BEGIN
  INSERT INTO foo (bar) VALUES('one');
  INSERT INTO foo (bar) VALUES('two');
END;

要执行DDL(如CREATE TABLE),您需要使用动态PL/SQL:

BEGIN
  EXECUTE IMMEDIATE 'CREATE TABLE foo (bar VARCHAR2(100))';
  EXECUTE IMMEDIATE 'INSERT INTO foo (bar) VALUES(:v)' USING 'one';
  EXECUTE IMMEDIATE 'INSERT INTO foo (bar) VALUES(:v)' USING 'two';
END;

INSERTS也是动态的,因为在运行块之前表不存在,因此无法编译.

注意:这是一个不寻常的要求:应用程序通常不应该创建表!

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有