بناء الجملة الأساسي لعبارات SQL الديناميكية
1: يمكن تنفيذ عبارات SQL العادية باستخدام Exec
على سبيل المثال: حدد * من اسم الجدول
Exec('اختر * من اسم الجدول')
Exec sp_executesql N'select * from tableName' -- يرجى ملاحظة أنه يجب إضافة N قبل السلسلة
2: عند استخدام أسماء الحقول وأسماء الجداول وأسماء قواعد البيانات وما إلى ذلك كمتغيرات، يجب استخدام SQL الديناميكي
على سبيل المثال:
أعلن @fname varchar(20)
تعيين @fname = "اسم الملف"
حدد @fname من tableName - خطأ، لن تتم المطالبة بأي خطأ، ولكن النتيجة هي قيمة ثابتة FiledName، وهي ليست ما تريده.
Exec('select ' + @fname + ' from tableName') - يرجى ملاحظة أن هناك مسافات حول علامات الاقتباس المفردة قبل علامة الجمع وبعدها.
بالطبع، يمكنك أيضًا تغيير السلسلة إلى شكل متغير
أعلن @fname varchar(20)
set @fname = 'FiledName' - قم بتعيين اسم الحقل
أعلن @s varchar (1000)
تعيين @s = 'حدد' + @fname + 'من اسم الجدول'
Exec(@s) - النجاح
exec sp_executesql @s - ستبلغ هذه الجملة عن خطأ
أعلن @s Nvarchar(1000) - لاحظ أنه تم تغييره إلى nvarchar(1000)
تعيين @s = 'حدد' + @fname + 'من اسم الجدول'
Exec(@s) - النجاح
exec sp_executesql @s - هذه الجملة صحيحة
3. معلمات الإخراج
أعلن @num int،
@sqls نفارتشار (4000)
تعيين @sqls='اختر العد (*) من اسم الجدول'
تنفيذي (@sqls)
--كيفية وضع نتيجة تنفيذ exec في متغير؟
أعلن @num int،
@sqls نفارتشار (4000)
تعيين @sqls='اختر @a=count(*) من اسم الجدول'
exec sp_executesql @sqls، N'@a int الإخراج'،@num الإخراج
حدد @رقم
إذا كنت تريد استخدام علامات الاقتباس المفردة '' في سلسلة عبارة SQL، فيمكنك استخدام ''''