كيف يمكنني تمرير متغير إلى الخلية السيناريو ؟

StackOverflow https://stackoverflow.com/questions/76065

  •  09-06-2019
  •  | 
  •  

سؤال

وأنا أعلم أن مع 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top