سؤال

كيف يمكنني استخدام بيانات SQL الديناميكية في قاعدة بيانات MySQL ودون استخدام متغيرات الجلسة؟

الآن لدي مثل هذا الرمز (في الإجراء المخزن MySQL):

(...) أعلن TableName Varchar (32)؛ set @ الاستحمام = null؛ sets: = concat ("حدد معرف إلى StSelectedID من"، tableName، "حيث Param = Val الحد 1)؛ تحضير STMT منs؛ تنفيذ STMT؛ إلغاء تخصيص STMT؛ إذا exnull (@ الحلوصية) ثم (...)

ولكن أود استخدام المتغيرات المحلية فقط، وهذا يعني أنني أود أن أبدأ هذا الإجراء مع:

إعلان TableName Varchar (32)؛ أعلن S varchar (1024)؛ تعلن عددا صحيحا SeneDID غير موقعة؛ (...)

ولا تستخدم @ char في أي مكان. هل هناك أي طريقة للقيام بذلك؟

هل كانت مفيدة؟

المحلول

آسف، أعدت البيانات في MySQL هي جلسة عالمية. بالنسبة الى http://dev.mysql.com/doc/refman/5.1/en/sql-syntax-preared-statements.html., "بيان مستعدا هو أيضا عالمية للدورة".

وليس هناك طريقة أخرى (إلى جانب البيانات المعدة) لتنفيذ SQL الديناميكي في MySQL 5.x.

بحيث يمكنك بالطبع استبدال "S" أعلاه، ولكن AFAIK عالق مع nSelectedID.

في MySQL 6.x، هناك ميزة مخطط لها والتي ستضيف عبارة "تنفيذ فورية" والتي ستنفذ SQL الديناميكي. يرى http://forge.mysql.com/worklog/task.php؟id=2793..

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