هل هناك طريقة لتحديد قاعدة بيانات من متغير؟

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

  •  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)
)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top