delphi4arab منتديات دلفي للعرب

نسخة كاملة : Stored Procedure and TSQLDataSet
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
لدي مشكلة في التعامل مع الاجراءات المخزنة في قاعدة بيانات 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
السلام عليكم ورحمة الله
مثال مرفق ألق عليه ونظرة.
بالتوفيق.
شكرا اخي 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
سوف استخدم طريقة أخرى لكنها تفي بالمطلوب

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

كالتالي:

كود :
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