كيف يمكنني تمرير متغير إلى الخلية السيناريو ؟
سؤال
وأنا أعلم أن مع mysql يمكنك كتابة عبارات SQL في .sql الملف وتشغيل الملف من الخلية سطر الأوامر مثل هذا:
mysql> source script.sql
كيف يمكنني تمرير متغير على النص ؟ على سبيل المثال ، إذا كنت ترغب في تشغيل البرنامج النصي الذي يقوم باسترداد جميع الموظفين في الإدارة ، أود أن تكون قادرة على تمرير عدد من الإدارة متغير.
أنا لا أحاول تشغيل الاستعلامات من خلال قذيفة النصي.هناك استعلامات بسيطة أركض من الخلية سطر الأوامر.أنا تعبت من إعادة كتابتها في كل وقت و كتابة شيل لهم مبالغة.
المحلول
مثل هذا:
set @department := 'Engineering';
ثم الإشارة @department
أينما كنت في حاجة إليها في البرنامج النصي.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 my_db my_table
#
#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
يمكنك إعادة استخدام المفهوم من من المشاريع التالية
كنت حقا ينبغي أن يكون النظر في أنسب طريقة للقيام بذلك.أعتقد أنك تحاول تشغيل الاستعلامات الخلية عبر قذيفة النصي.بدلا من ذلك يجب أن تستخدم شيئا مثل PERL أو PHP.