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

عدد صفوف الاجراء المخزن

بدأه محمد فؤاد تركي في 5 ديسمبر 2012 · 7 رد · 686 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الاخوة الزملاء

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

أريد ان اقوم بانشاء اجراء مخزن Stored procedure يقوم بعد صفوف اجراء مخزن آخر

حاولت ان استخدم هذه الجملة لكنها تقوم بارجاع استعلامين

1- يسترجع الصفوف

2- يسترجع عدد الصفوف

والمطلوب استرجاع عدد الصفوف فقط بدون استرجاع الصفوف نفسها

exec RptbriefItemLimitBalance
select @@ROWCOUNT as ItemCount

post-46243-054098100 1354710925_thumb.jp

المرفقات
1.jpg

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 5 ديسمبر 2012 في 16:55

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#2

ما هيه القيمه المخزنة في المتغير RptbriefItemLimitBalance ؟؟؟

انت هنا تنفذ جملتين الاولى RptbriefItemLimitBalance والثانيه rowCount

#3

RptbriefItemLimitBalance هذا ليس متغير ! هذا Stored procedure بداخلة جملة Select

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#4

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

على حسب ما فهمت أنك تريد عرض عدد الصفوف الناتجة من تنفيذ الإجراء RptbriefItemLimitBalance

إذا كان فهمى صحيحاً فأعتقد أن الكود التالي يقوم باللازم بإذن الله

select count(*) from RptbriefItemLimitBalance

ويمكنك استبدال علامة * باسم أى حقل بحيث تصمن ألا يحتوى هذا الحقل على null حتى يعطى لك العدد الصحيح

أرجو أن يكون هذا مفيداً

3

أدعو الله أن يجعل أعمالنا خالصة لوجهه الكريم --- وأن ينفعنا بما علمنا

Dr Sayed Tohamy

Programming Instructor

مدرب برمجة

---------------

EmaSoft2000

-------------------

#5

الكود التالي جربته سابقا ولم يفي بالغرض واعطاني الخطأ التالي

Msg 208, Level 16, State 3, Line 1
Invalid object name 'RptbriefItemLimitBalance'.

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#6
ema2000_t كتب:

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

على حسب ما فهمت أنك تريد عرض عدد الصفوف الناتجة من تنفيذ الإجراء RptbriefItemLimitBalance

إذا كان فهمى صحيحاً فأعتقد أن الكود التالي يقوم باللازم بإذن الله

select count(*) from RptbriefItemLimitBalance

ويمكنك استبدال علامة * باسم أى حقل بحيث تصمن ألا يحتوى هذا الحقل على null حتى يعطى لك العدد الصحيح

أرجو أن يكون هذا مفيداً

الكود السابق بالفعل خطأ لأنه غير مسموح باستخدام الإجراء داخل الاستعلامات إنما المسموح به هو استخدام الوظائف

لذلك

إذا كان الإجراء يحتوى على جملة استعلامية فقط دون أى أوامر Create, Alter or Drop فيفضل وضع الجملة في وظيفة (user function) أو View

أما لو لم يمكن تغيير الإجراء فيمكن الاستعلام عن النتيجة التى تظهر منه ولكن بعد تخزينها فى جدول مؤقت مثل الكود التالى

create proc sp_SelectRowsCount
as
declare @TempTable table(Id int, name nvarchar(50))
insert into @TempTable exec RptbriefItemLimitBalance
select count(*) from @TempTable

مع ملاحظة ضبط السطر الخاص بتعريف المتغير @TempTAble ليكون بنفس أعمدة وترتيب الإجراء

أرجو أن يكون مفيدا

ومعذرة على الكود الخطأ

4

أدعو الله أن يجعل أعمالنا خالصة لوجهه الكريم --- وأن ينفعنا بما علمنا

Dr Sayed Tohamy

Programming Instructor

مدرب برمجة

---------------

EmaSoft2000

-------------------

#7

بارك الله فيك أخي الكريم ema2000_t

ضبطت معي فكرة TempTable

شكراً لك

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#8

يفضل استخدام function table مثل الStored procedure ويمكن عمل منها select and parameter ولكن لا يمكن علب بداخلها DML

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