الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية جعل متغير عام يشير إلى جدول

بدأه ABC123 في 23 يناير 2014 · 3 رد · 645 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

 

سؤال هام جدا لذوي الخبرة والإختصاص في لغة البرمجة T-SQL

 

باختصار شديد انا عندي إجراء مخزن يحتوي على الجملة الآتية :

DECLARE @N1 INT

SET @N1 = (SELECT COUNT(*) FROM SEARCH1)
 
إريد أن أمرر متغير وليكن اسمة @TBL1 إلى الإجراء المخزن لأستطيع تنفيذ الآتي :
SET @N1 = (SELECT COUNT(*) FROM @TBL1)
 
إذا لم يكن هناك نوع بيانات يقبل أن يكون متغيرا لجدول فما هي الطريقة البديلة ؟!!!!!!!!!!!!!!!!!
 
مع العلم أني جربت الآتي :
   SET @CMD1 = 'SELECT COUNT(*) FROM ' + @TBL1
   SET @N1 = EXEC (@CMD1)
 
ولكن الطريقة خاطئة ؟؟؟؟؟؟؟؟؟؟؟؟؟!!!!!!!!!!!!!!!!!!!!!!!!
 
#2

UP

#3

look this code

DECLARE @sql    nvarchar(4000),
        @params nvarchar(4000),
        @count  int


   SELECT @sql =
   N' SELECT @cnt = COUNT(*) FROM dbo.' + quotename(@tbl) +
   N' WHERE LastUpdated BETWEEN @fromdate AND ' +
   N'                           coalesce(@todate, ''99991231'')'
   SELECT @params = N'@fromdate datetime, ' +
                    N'@todate   datetime = NULL, ' +
                    N'@cnt      int      OUTPUT'
   EXEC sp_executesql @sql, @params, '20060101', @cnt = @count OUTPUT

   PRINT @tbl + ': ' + convert(varchar(10), @count) + ' modified rows.'

http://www.sommarskog.se/dynamic_sql.html

#4

جزاك الله خير الجزاء أخي KARIMSOFT على الرد

 

تجاوزت المشكلة الموجودة عندي في الكود بالإعتماد على @@ROWCOUNT

 

لكني سأتحقق من الكود ومن الرابط وسوف اوافيك بالنتيجة إن شاء الله

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…