Ted*_*ott 6 .net database oracle ado.net
拆分SQL语句以发送到Oracle ADO.NET客户端的正确方法是什么?例如,假设您在文本文件中包含以下代码并希望执行以下语句:
CREATE TABLE foo (bar VARCHAR2(100));
INSERT INTO foo (bar) VALUES('one');
INSERT INTO foo (bar) VALUES('two');
Run Code Online (Sandbox Code Playgroud)
我相信尝试在一个命令中发送所有这些将导致Oracle抱怨";".我的第一个想法是分裂";" 字符,并一次发送一个.
但是,存储过程也可以包含分号,那么我将如何制作它以便拆分例程将整个存储过程保持在一起?是否还需要查找开头/结尾语句,或"/"?
ODP.NET和Micrsoft Oracle Provider之间在这些方面有什么不同吗?
如果没有DDL,您可以通过使用BEGIN和END包围语句来创建匿名PL/SQL块:
BEGIN
INSERT INTO foo (bar) VALUES('one');
INSERT INTO foo (bar) VALUES('two');
END;
Run Code Online (Sandbox Code Playgroud)
要执行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;
Run Code Online (Sandbox Code Playgroud)
INSERTS也是动态的,因为在运行块之前表不存在,因此无法编译.
注意:这是一个不寻常的要求:应用程序通常不应该创建表!
| 归档时间: |
|
| 查看次数: |
3583 次 |
| 最近记录: |