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

مشكلة في Order By في Stored Procedure

مغلق
بدأه Adel Khayata في 7 يناير 2005 · 3 رد · 558 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم.

أنا أحاول كتابة Stored Procedure في SQL Server ليجلب سجلات حسب ترتيب حقل معين يتم ارساله لل Stored Procedure و هو كالتالي :

CREATE PROCEDURE GetGroups
(@OrderField nvarchar(15))
AS 
Select *
From Groups
order by @OrderField
Return
GO

لكن SQL Server يعطيني رسالة خطأ كالتالي:

Error 1008: The Select item identified by the order by number 1 contains a variable as part of the expression identifying a column postion.Variables are only allowed when ordering by an expression referencing a column name.

فماهي المشكلة و كيف يمكن حلها ؟

جزاكم الله خيراً.

#2

لايمكن تمرير وسيط لإجراء مخزن ليكون محددا لاسم جدول أو طريقة ترتيب أو حقول مختارة.

أرى من الأفضل تحديد خيار الترتيب في جملة SQL من خلال كود البرنامج، وتمريرها مباشرة للتنفيذ، مثلا:

dim sql as string
sql="Select * From Groups order by "

if me.optOrderBy(1).value  then
    sql=sql+ "field1"
elseif me.optOrderBy(2).value then
   sql=sql+"field2"
...
...
end if

set rs=cn.execute(sql)

فكر بطريقة أخرى

#3

يمكن تعملها بالطريقة هذه:-

CREATE PROCEDURE GetGroups
(@OrderField nvarchar(15))
AS
EXEC 'Select * From Groups ORDER BY ' + @OrderField
Return
GO
#4

شكرا لك ياSystem Down ، لم تخطر في بالي طريقة :

EXEC 'Select * From Groups ORDER BY ' + @OrderField

حيث أن TSQL لاتقبل التمرير بالمرجع passing by reference ، فقط بالقيمة by values ، وهذه الطريقة تلتف حول هذا التقييد.

تم تعديل هذه المشاركة بواسطة walcom في 9 يناير 2005 في 13:37

فكر بطريقة أخرى

هذا الموضوع مغلق.

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