كيفية الجمع بين تعيين متغير مع عمليات استرجاع البيانات في T-SQL

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

سؤال

وفقط لتوضيح، أنا على التوالي سايبيس 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top