gpt4 book ai didi

sql - 如何统计一个sql文件中有多少条sql语句?

转载 作者:行者123 更新时间:2023-12-04 20:57:08 39 4
gpt4 key购买 nike

因此,给定一个要在 Oracle 中执行的 SQL 文件,我们需要确定要在 SQL 文件中执行多少 block 。例如,SQL 文件中有一个 block 包含以下命令,

CREATE TABLE customer (id varchar2(42));

以下 SQL 文件中的两个 block ,

ALTER TABLE customer ADD name varchar2(42);
ALTER TABLE customer DROP COLUMN id;

和下面SQL文件中的三个 block

CREATE OR REPLACE PROCEDURE printHelloWorld IS
BEGIN
dbms_output.put_line('Hello World!');
END;
/

INSERT INTO customer VALUES ('ivan');

DROP TABLE customer;

除了输入将在 Oracle SQLDeveloper 中无任何错误地执行这一事实外,我们不能对输入做出任何其他假设。

更新

提问的目的是确保SQL文件中只有一条语句被执行。我也愿意回答这个问题。如果能够创建脚本将多语句 SQL 文件拆分为多个文件,那就更好了。

最佳答案

这不是一个完美的解决方案,但我认为在大多数情况下都有效。

首先创建一个 duff 用户,除了创建 session 之外没有任何权限。

CREATE USER duff IDENTIFIED BY "password";
GRANT CREATE SESSION TO duff;

然后将其与 sqlplus 和 grep 一起使用来计算 ORA 错误 - 每个语句应该有一个错误。

sqlplus duff/password@db < script.sql | grep -c ORA-

如果您有 ALTER SESSION 语句,那么您需要更多

sqlplus duff/password@db < script.sql | grep -Ec 'ORA-|Session altered.'

可能还有其他异常(exception),但我认为它为您提供了一个开销很小的可行解决方案。请注意脚本不会切换用户 - 但如果您的脚本中有硬编码的用户名和密码,则会出现其他问题。

关于sql - 如何统计一个sql文件中有多少条sql语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24175335/

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