Ответ 1
Вот так:
set @department := 'Engineering';
Затем укажите @department
, где вам нужно в script.sql:
update employee set salary = salary + 10000 where department = @department;
Я знаю, что с помощью mysql вы можете записывать операторы SQL в файл .sql и запускать файл из командной строки mysql следующим образом:
mysql> source script.sql
Как передать переменную в script? Например, если я хочу запустить script, который извлекает всех сотрудников в отделе, я хочу иметь возможность передать номер отдела в качестве переменной.
Я не пытаюсь запускать запросы через оболочку script. Есть простые запросы, которые я запускаю из командной строки mysql. Я устал переписывать их все время, и писать оболочку script для них было бы излишним.
Вот так:
set @department := 'Engineering';
Затем укажите @department
, где вам нужно в script.sql:
update employee set salary = salary + 10000 where department = @department;
#!/bin/bash
#verify the passed params
echo 1 cmd arg : $1
echo 2 cmd arg : $2
export db=$1
export tbl=$2
#set the params ... Note the quotes ( needed for non-numeric values )
mysql -uroot -pMySecretPaassword \
-e "set @db='${db}';set @tbl='${tbl}';source run.sql ;" ;
#usage: bash run.sh isg_pub_en MetaEntity
#
#eof file: run.sh
--file:run.sql
SET @query = CONCAT('Select * FROM ', @db , '.' , @tbl ) ;
SELECT 'RUNNING THE FOLLOWING query : ' , @query ;
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
--eof file: run.sql
вы можете повторно использовать всю концепцию из из следующего проекта
вы действительно должны смотреть на более подходящий способ сделать это. Я собираюсь предположить, что вы пытаетесь запустить mysql-запросы через оболочку script. вы должны использовать что-то вроде PERL или PHP.