add batch
remove batch
split batch
comment selection
show hidden batches
hide batch
highlight batch
db<>fiddle
Db2
Firebird
MariaDB
MySQL
Node.js
Oracle
Postgres
SQL Server
SQLite
TimescaleDB
YugabyteDB
Developer-C 11.1
3.0
4.0
10.2
10.3
10.4
10.5
10.6
10.7
10.8
10.9
10.11
11.4
5.5
5.6
5.7
8.0
8.4
18
11g Release 2
18c
21c
23c
8.4
9.3
9.4
9.5
9.6
10
11
12
13
14
15
16
17
2012
2014
2016
2017
2017 (Linux)
2019
2019 (Linux)
2022
3.8
3.16
3.27
3.39
2.11
2.14
2.6
2.8
2.18
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
Sakila
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
AdventureWorks
no sample DB
no sample DB
AdventureWorks
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
no sample DB
run
abort
markdown
donate
feedback
about
By using db<>fiddle, you agree to license everything you submit by
Creative Commons CC0
.
CREATE TABLE parameters (PARAM VARCHAR(255), PARAM_VALUE VARCHAR(255)); INSERT INTO parameters VALUES ('param0', '1 + $(param1)'); INSERT INTO parameters VALUES ('param1', '1 + $(param2) + $(param3)'); INSERT INTO parameters VALUES ('param2', '1 + $(param4)'); INSERT INTO parameters VALUES ('param4', '1 + 3'); INSERT INTO parameters VALUES ('param3', '1 + 2');
CREATE PROCEDURE get_params_list (param VARCHAR(255)) BEGIN CREATE TABLE params_list (param VARCHAR(255) PRIMARY KEY, param_value VARCHAR(255)) ENGINE = Memory; INSERT INTO params_list SELECT * FROM parameters WHERE parameters.param = param; REPEAT INSERT IGNORE INTO params_list SELECT parameters.* FROM params_list JOIN parameters ON LOCATE(CONCAT('$(', parameters.param, ')'), params_list.param_value); UNTIL NOT ROW_COUNT() END REPEAT; SELECT params_list.param FROM params_list WHERE params_list.param <> param; DROP TABLE params_list; END
CALL get_params_list('param3');
CALL get_params_list('param1');
param
param2
param3
param4
CALL get_params_list('param0');
param
param1
param2
param3
param4