gpt4 book ai didi

.net - 如何为 ADO.NET 拆分 Oracle sql 语句

转载 作者:太空狗 更新时间:2023-10-30 01:49:11 25 4
gpt4 key购买 nike

拆分 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 在这些方面有什么区别吗?

最佳答案

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

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 也是动态的,因为表在运行 block 之前不存在,因此无法编译。

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

关于.net - 如何为 ADO.NET 拆分 Oracle sql 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/308963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com