(8.0.26)
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11176009486
drop table tab1;
create table tab1(col1 int, col2 varchar(1));
insert into tab1 values(1,'A');
insert into tab1 values(2,'B');
insert into tab1 values(3,'C');
select * from tab1;
vim a1.sql
select * from tab1 where col1 = @col1 and col2 = '@col2';
vim a2.sql
select * from tab1 where col1 = @col1 and col2 = @col2;
mysql test -e "set @col1=1; set @col2=A; source a1.sql;"
→エラー
mysql test -e "set @col1=1; set @col2=A; source a2.sql;"
→エラー
mysql test -e "set @col1=1; set @col2='A'; source a1.sql;"
→ヒットしない
mysql test -e "set @col1=1; set @col2='A'; source a2.sql;"
→OK
※文字列のクォートはパラメータ側に指定する必要あり
mysql test -e "set @tab1=tab1; source b.sql;"
→エラー
mysql test -e "set @tab1='tab1'; source b.sql;"
→エラー
※テーブル名をパラメータ指定はできない
(19c)
https://www.shift-the-oracle.com/sqlplus/tutorial/sqlplus-script-parameter.html
drop table tab1 purge;
create table tab1(col1 int, col2 varchar2(1));
insert into tab1 values(1,'A');
insert into tab1 values(2,'B');
insert into tab1 values(3,'C');
commit;
select * from tab1;
vim a1.sql
select * from tab1 where col1 = &1 and col2 = '&2';
exit
vim a2.sql
select * from tab1 where col1 = &1 and col2 = &2;
exit
vim b.sql
select * from &1;
exit
sqlplus test/test@pdb1 @a1.sql "1" "A"
→OK
sqlplus test/test@pdb1 @a2.sql "1" "A"
→エラー
sqlplus test/test@pdb1 @a1.sql "1" "'A'"
→OK
sqlplus test/test@pdb1 @a2.sql "1" "'A'"
→エラー
※文字列のクォートはSQLファイル側に指定する必要あり
sqlplus test/test@pdb1 @b.sql "tab1"
→OK
sqlplus test/test@pdb1 @b.sql "'tab1'"
→OK
※テーブル名をパラメータ指定も可能
(14)
https://dk521123.hatenablog.com/entry/2021/08/01/000000
drop table tab1;
create table tab1(col1 int, col2 varchar(1));
insert into tab1 values(1,'A');
insert into tab1 values(2,'B');
insert into tab1 values(3,'C');
select * from tab1;
vim a1.sql
select * from tab1 where col1 = :col1 and col2 = ':col2';
vim a2.sql
select * from tab1 where col1 = :col1 and col2 = :col2;
psql test -v col1="1" -v col2="A" -f a1.sql
→ヒットしない
psql test -v col1="1" -v col2="A" -f a2.sql
→エラー
psql test -v col1="1" -v col2="'A'" -f a1.sql
→ヒットしない
psql test -v col1="1" -v col2="'A'" -f a2.sql
→OK
※文字列のクォートはパラメータ側に指定する必要あり
psql test -v tab1="tab1" -f b.sql
→OK
psql test -v tab1="'tab1'" -f b.sql
→エラー
※テーブル名をパラメータ指定も可能
drop table tab1;
create table tab1(col1 int, col2 varchar(1));
insert into tab1 values(1,'A');
insert into tab1 values(2,'B');
insert into tab1 values(3,'C');
select * from tab1;
notepad a1.sql
select * from tab1 where col1 = $(col1) and col2 = '$(col2)';
notepad a2.sql
select * from tab1 where col1 = $(col1) and col2 = $(col2);
notepad b.sql
select * from $(tab1);
sqlcmd -d test -v col1="1" -v col2="A" -i a1.sql
→OK
sqlcmd -d test -v col1="1" -v col2="A" -i a2.sql
→エラー
sqlcmd -d test -v col1="1" -v col2="'A'" -i a1.sql
→エラー
sqlcmd -d test -v col1="1" -v col2="'A'" -i a2.sql
→OK
※文字列のクォート指定はパラメータ側とSQLファイル側のどちらでもよい
sqlcmd -d test -v tab1="tab1" -i b.sql
→OK
sqlcmd -d test -v tab1="'tab1'" -i b.sql
→エラー
※テーブル名をパラメータ指定も可能