TSQL تحديد الجدول المؤقت (أو متغير الجدول) دون تحديد مخطط؟
-
22-08-2019 - |
سؤال
هل هناك طريقة لتحديد جدول مؤقت دون تحديد انها مخطط في خط الهجوم؟
المحلول
والواقع باستخدام متغير الجدول، جدول في الذاكرة، هي الطريقة المثلى للذهاب. و#table بإنشاء جدول في ديسيبل درجة الحرارة، و## الجدول العالمي - مع كل الضربات القرص. النظر في تباطؤ / ضرب من ذوي الخبرة مع عدد من المعاملات.
CREATE PROCEDURE [dbo].[GetAccounts]
@AccountID BIGINT,
@Result INT OUT,
@ErrorMessage VARCHAR(255) OUT
AS
BEGIN
SET NOCOUNT ON;
SET @Result = 0
SET @ErrorMessage = ''
DECLARE @tmp_Accounts TABLE (
AccountId BIGINT,
AccountName VARCHAR(50),
...
)
INSERT INTO @tmp_Accounts ([AccountId], [AccountName]...
)
SELECT AccountID, AccountName
FROM Accounts
WHERE ...
IF @@Rowcount = 0
BEGIN
SET @ErrorMessage = 'No accounts found.'
SET @Result = 0
RETURN @Result
END
ELSE
BEGIN
SET @Result = 1
SELECT *
FROM @tmp_Accounts
END
ملاحظة الطريقة التي تضاف إلى هذا الجدول المؤقت.
وهذا الجانب السلبي من هذا هو أنه قد يستغرق وقتا أطول قليلا في الكتابة، لديك لتحديد متغير الجدول الخاص بك.
ويهمني أيضا أن يوصي موجه SQL للمحلل الاستعلام بواسطة REDGATE.
نصائح أخرى
ولا تحتاج OPENQUERY. وضعت للتو "INTO #AnyTableName" بين قائمة مختارة ومن أي استعلام ...
SELECT *
INTO #Temp1
FROM table1
WHERE x=y
نعم، يمكنك إنشاء مع
SELECT INTO ...
ودعونا نقول
SELECT * INTO #t
FROM OPENQUERY( 'server',
'exec database.dbo.proc_name value1, value2, ... ' )
لا تنتمي إلى StackOverflow