هل هناك طريقة لتحديد قاعدة بيانات من متغير؟
-
06-09-2019 - |
سؤال
هل هناك طريقة لتحديد قاعدة بيانات من متغير؟
Declare @bob as varchar(50);
Set @bob = 'SweetDB';
GO
USE @bob
المحلول
للاسف لا.
ما لم تتمكن من تنفيذ بقية دفعة الخاص بك كما SQL ديناميكي.
استخدام execute
لإعدام SQL ديناميكيا سوف يغير سياق نطاق execute
بيان، ولكن لن تترك تأثير دائم على النطاق الذي تنفذ execute
بيان من.
بمعنى آخر، هذا:
DECLARE @db VARCHAR(100)
SET @db = 'SweetDB'
EXECUTE('use ' + @db)
لن يقوم بتعيين قاعدة البيانات الحالية بشكل دائم، ولكن إذا قمت بتغيير التعليمات البرمجية أعلاه مثل هذا:
DECLARE @db VARCHAR(100)
SET @db = 'SweetDB'
EXECUTE('use ' + @db + ';select * from sysobjects')
select * from sysobjects
ثم ستكون نتيجة هذين الاستعلامات مختلفة (على افتراض أنك لست في Sweetdb بالفعل)، منذ أول اختيار، يتم تنفيذه في الداخل execute
ينفذ في Sweetdb، ولكن الثانية ليست كذلك.
نصائح أخرى
declare @NewDB varchar(50)
set @NewDB = 'NewDB'
execute('use ' + @NewDB)
#temptables سوف تمنع عبر GOS
يمكنك إنشاء الجدول في الدفعة الأولى، أدخل / حدد البيانات حسب الضرورة في ذلك أو أي دفعة التالية.
هنا هو بعض بناء جملة العينات:
CREATE TABLE #YourTableName
(
col1 int not null primary key identity(1,1)
,col2 varchar(10)
)
لا تنتمي إلى StackOverflow