delphi4arab منتديات دلفي للعرب
Stored Procedure and TSQLDataSet - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : Stored Procedure and TSQLDataSet (/showthread.php?tid=2497)



Stored Procedure and TSQLDataSet - hasob2000 - 16-10-2010

لدي مشكلة في التعامل مع الاجراءات المخزنة في قاعدة بيانات SQL Server

جربت كل الطرق لكنها لم تفلح معي

لدي اجراء مخزن يتم تنفيذه بشكل ممتاز عند استخدامها مع TSQLDataSet او TSQLStoredProc
و يقوم بارجاع القيمة المطلوب ارجاعها

باستخدام الاوامر التالية :

ٍٍَSQL Server Stored Procedure
كود :
ALTER PROCEDURE [dbo].[Temp_Proc2] AS BEGIN select Col1 from dbo.Temp_table1 where Col1 = '10' END

Delphi Code
كود :
SQLDataSet1.Open;

لكن عند استخدام احد الاوامر Insert , Delete , Update
يعطيني رسالة خطأ
[صورة: Error_Message.jpg]

SQL Server Stored Procedure

كود :
ALTER PROCEDURE [dbo].[Temp_Proc2] AS BEGIN Declare @i int insert into dbo.Temp_table1 (Col1) values ('abc') set @i = 10 select @i END



Stored Procedure and TSQLDataSet - kachwahed - 16-10-2010

السلام عليكم ورحمة الله
مثال مرفق ألق عليه ونظرة.
بالتوفيق.



Stored Procedure and TSQLDataSet - hasob2000 - 17-10-2010

شكرا اخي kachwahed

المثال المرفق يستخدم ADO Connection , ADO Stored procedure
عدلت قليلا على Stored Procedure
كود :
CREATE PROCEDURE [dbo].[CheckName] @aName nvarchar(80) AS BEGIN IF LEN (@aName) > 5 INSERT INTO Customer Values(LEN(@aName), @aName, '', '', GETDATE(), '') ELSE [color=Red]return 1[/color] END

و اشتغل تمام

رجع قيمة في parameter "Return Value"

وهذا جيد في حال استخدام ADO لانها تضع Parameter " Return Value"
بشكل تلقائي
لكن هذه الخاصية غير موجوده في dbexpress (SQLStoredproc)
وانا استخدم SQLConnection في برنامج يعتمد على DataSnap


Stored Procedure and TSQLDataSet - hasob2000 - 17-10-2010

سوف استخدم طريقة أخرى لكنها تفي بالمطلوب

و هي ان يرجع المتغير القيمة التي تم التعديل عليه فيها

كالتالي:

كود :
CREATE PROCEDURE [dbo].[CheckName] @aName nvarchar(80) [color=Blue]@MyResult nvarchar (10) OutPut[/color] AS BEGIN IF LEN (@aName) > 5 INSERT INTO Customer Values(LEN(@aName), @aName, '', '', GETDATE(), '') ELSE [COLOR="Red"] Set @MyResult = 'Not Correct Names' [/COLOR] END