insert/update/delete 单个 SQL 语句中的多个表
insert/update/delete multiple tables in single SQL statement
当我在 Oracle DB 上将 JMeter 与 JDBC request 一起使用时,它不允许在语句中使用 ;
。
SQL query.
Do not enter a trailing semi-colon.
例如
insert into a select '1' from dual;
insert into b select '1' from dual
将产生异常(当拆分为 2 个单独的请求时它会起作用):
java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly ended
如果我想执行 clear/insert 测试数据,我无法使用 1 JDBC 请求插入多个 tables 并且我必须为每个 table 创建至少 1 个请求(每个 table 可以有多个值)。
有没有办法 insert/update/delete 除了使用可调用语句?
此限制仅与 SQL 注入有关吗?
为什么不尝试:Insert Into tableA a, tableB b Value (a.field = (Select '1' From Dual), b.field = (Select '1' From Dual))
,我不太确定,但我认为它可以工作。
我发现 INSERT ALL 有多个表有效:
INSERT ALL
Into a (a) values ('1')
into b (b) values('1')
SELECT * FROM dual
You can also use the INSERT ALL statement to insert multiple rows into more than one table in one command.
插入可以,使用INSERT ALL
,例如
insert all
into a (col) values ('1')
into b (col) values ('2')
select * From dual
更新和删除不会;恐怕你必须为每个 table 使用一个语句,除非你想使用 PL/SQL 并调用一个 过程 来完成所有工作.
;不是 "sql" 的一部分,它是发送 sql 的程序的终止符。在sqldev/sqlcl/sqlplus中的“;”被视为知道语句的结尾,以将到该点的所有内容作为语句发送到数据库。然后处理下一组文本直到下一个“;”或“/”
此示例以一个大字符串的形式呈现给数据库,例如:
"insert into a select '1' from dual; insert into b select '1' from dual"
要在对数据库的 1 次调用中执行 2 条语句,需要 begin/end 将其转换为可执行块,例如
BEGIN
insert into a select '1' from dual;
insert into b select '1' from dual;
END;
然后在JMeter中改成"Callable Statement"
当我在 Oracle DB 上将 JMeter 与 JDBC request 一起使用时,它不允许在语句中使用 ;
。
SQL query. Do not enter a trailing semi-colon.
例如
insert into a select '1' from dual;
insert into b select '1' from dual
将产生异常(当拆分为 2 个单独的请求时它会起作用):
java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly ended
如果我想执行 clear/insert 测试数据,我无法使用 1 JDBC 请求插入多个 tables 并且我必须为每个 table 创建至少 1 个请求(每个 table 可以有多个值)。
有没有办法 insert/update/delete 除了使用可调用语句?
此限制仅与 SQL 注入有关吗?
为什么不尝试:Insert Into tableA a, tableB b Value (a.field = (Select '1' From Dual), b.field = (Select '1' From Dual))
,我不太确定,但我认为它可以工作。
我发现 INSERT ALL 有多个表有效:
INSERT ALL
Into a (a) values ('1')
into b (b) values('1')
SELECT * FROM dual
You can also use the INSERT ALL statement to insert multiple rows into more than one table in one command.
插入可以,使用INSERT ALL
,例如
insert all
into a (col) values ('1')
into b (col) values ('2')
select * From dual
更新和删除不会;恐怕你必须为每个 table 使用一个语句,除非你想使用 PL/SQL 并调用一个 过程 来完成所有工作.
;不是 "sql" 的一部分,它是发送 sql 的程序的终止符。在sqldev/sqlcl/sqlplus中的“;”被视为知道语句的结尾,以将到该点的所有内容作为语句发送到数据库。然后处理下一组文本直到下一个“;”或“/”
此示例以一个大字符串的形式呈现给数据库,例如:
"insert into a select '1' from dual; insert into b select '1' from dual"
要在对数据库的 1 次调用中执行 2 条语句,需要 begin/end 将其转换为可执行块,例如
BEGIN
insert into a select '1' from dual;
insert into b select '1' from dual;
END;
然后在JMeter中改成"Callable Statement"