كيفية الجمع بين تعيين متغير مع عمليات استرجاع البيانات في T-SQL
-
04-07-2019 - |
سؤال
وفقط لتوضيح، أنا على التوالي سايبيس 12.5.3، ولكن أنا يؤدي إلى الاعتقاد بأن هذا ينطبق ل SQL Server 2005 أيضا. في الأساس، وأنا أحاول أن أكتب استعلام التي تبدو قليلا مثل هذا، لقد تبسيطه قدر الإمكان لتسليط الضوء على المشكلة:
DECLARE @a int, @b int, @c int
SELECT
@a = huzzah.a
,@b = huzzah.b
,@c = huzzah.c
FROM (
SELECT
1 a
,2 b
,3 c
) huzzah
وهذا الاستعلام يعطيني الخطأ التالي: <م> "خطأ: 141 وجاء في بيان SELECT التي بتعيين قيمة يجب ألا جنبا إلى جنب مع عمليات استرجاع البيانات متغير" م>
والعمل الوحيد حول ذلك لقد حصلت على هذا حتى الآن، هو إدراج بيانات جدول مشتقة في جدول مؤقت ومن ثم تحديده حق العودة بها مرة أخرى. الذي يعمل بشكل جيد، ولكن الحقيقة أن هذا لا يعمل يؤرق لي. هل هناك طريقة أفضل للقيام بذلك؟
المحلول
لا يظهر الخطأ كما هو موضح في 12.5.3 البيئة والتنمية المستدامة 4 و 7، فإنه يعمل بشكل جيد في 12.5.4 البيئة والتنمية المستدامة 4 و 6.
ويبدو الخلل الذي تم مصححة، تبدو الخيارات الوحيدة ليكون الحل أو التصحيح.
وجدت ما يبدو أن علة 377625
نصائح أخرى
ولقد جريت الشفرة ضد 12.5.3 ويوزع على ما يرام ... لا يعود أي شيء ولكنها لا تعمل. هل ربما تبسيط المشكلة قليلا كثيرا لأنني لا أرى أي رسائل خطأ على الإطلاق.
ومجرد أن تكون واضحة، تشغيل التالية وإرجاع ما كنت تتوقع.
DECLARE @a int, @b int, @c int
SELECT
@a = huzzah.a
,@b = huzzah.b
,@c = huzzah.c
FROM (
SELECT
1 a
,2 b
,3 c
) huzzah
select @a
select @b
select @c