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

خطأ في إنشاء القادح

مغلق
بدأه Desigen في 4 مارس 2006 · 4 رد · 548 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

يعطيكم العافية

أنا أقوم ببناء قادح و هذا الكود الخاص به

--	Create Triggers  ------------------------------------------------------------------------------
--	Trigger on AnalysisDetails for Normailty field from ItemRange field 
Create Trigger Trigger_AnalysisDetail_Normailty
On AnalysisDetail 
Instead of Insert 
AS 
Begin 
	Declare @Result Int 
	Declare @Min Int 
	Declare @Max Int 
	Declare @Normality Int 
	Declare @Sex Bit 
--	Declare @Age TinyInt 

	--	Get Patient Data 
	Select  
  @Sex = P.Sex 
--  @Age = P.Age 
	From 
  PatientInfo P , Analysis A , AnalysisDetail AD 
	Where
  A.AnalysisId = AD.AnalysisId And 
  A.PatientId = P.PatientId 

	--	Get The Entered Result from user 
	Select 
  @Result = I.Result 
	From 
  Inserted I 

	--	Get Min And Max Values from ItemRange
	Select 
  @Min = MinValue , 
  @Max = MaxValue 
	From 
  ItemRange , Inserted
	Where
  ItemRange.ItemInfoId = Inserted.ItemInfoId And ( 
  ItemRange.Sex = @Sex Or ItemRange.Sex is NULL ) 

	--	Set Normality 
	If ( ( @Result >= @Min ) AND ( @Result <= @Max ) )  
  Set @Normality = 0 -- Normal 
	else
  If ( @Result > @Max ) 
 	 Set @Normality = 2 -- Max 
  else
 	 -- If ( @Result < @Min ) 
    Set @Normality = 1 -- Min 

	--	Insert Data To AnalysisDetail
	Insert Into AnalysisDetail
	Select 
  I.ItemInfoId , 
  I.AnalysisId , 
  I.Result , 
  @Normality 
	From 
  Inserted I 

End 

------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
--	3)) Add Data to Tables  ------------------------------------------------------------------

Use MyDataBase
Go

و لكن لا يتم بناءه و يعطيني رسالة خطأ و هي

Server: Msg 154, Level 15, State 1, Procedure Trigger_AnalysisDetail_Normailty, Line 67
a USE database statement is not allowed in a procedure or trigger.

كيف بدي حل المشكلة

شكرا لكم

سلام

#2

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

MyDataBase.[Owner].MyTB

مثال على الطاير :

select * from NorthWind..Titles

من ضمن قاعدة بياناتك الحالية..

و بالتالي مفيش داعي لإستخدام عبارة Use هنا .. :)

جرب و اعطيني خبر ..

أخوكم أبو عمر . :rolleyes:

تم تعديل هذه المشاركة بواسطة AboOmer_ozn في 4 مارس 2006 في 14:58

#3

شكرا على ردك

في حال حذفت سطر use

بيجي عندي تعليمة بداية مناقلة

و عم يعطيني الخطأ

Server: Msg 156, Level 15, State 1, Procedure Trigger_AnalysisDetail_Normailty, Line 78

Incorrect syntax near the keyword 'End'.

شو بدي أعمل

#4

السلام عليكم يا أحباب :

لو نظرت أخي الكريم إلى الـ Syntax لعبارة Create Trigger لربما كان في شيء قد غاب عن بالك أو نسيت شيء .. تأكد .. :unsure:

طبعاً بالإضافة إلى ما تفضل به الأخ أبو عمر .. :)

CREATE TRIGGER trigger_name 
ON { table | view } 
[ WITH ENCRYPTION ] 
{ 
    { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] } 
        [ WITH APPEND ] 
        [ NOT FOR REPLICATION ] 
        AS 
        [ { IF UPDATE ( column ) 
            [ { AND | OR } UPDATE ( column ) ] 
                [ ...n ] 
        | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask ) 
                { comparison_operator } column_bitmask [ ...n ] 
        } ] 
        sql_statement [ ...n ] 
    } 
}

يا أخي الكريم Desigen لما تستخدم Begin و End أصلاً .. و هاتين التعليمتين كما ترى غير موجودتين في الـ Syntax ..

ربما المصرف لم يرضى أن تبدأ مناقلة جديدة بعد عبارة الـ End رغم أنني جربت و قبل الكود التالي :

Create Trigger MyTrigger
ON dbo.TB
Instead Of Delete
AS
Begin 
  Select * from TB
End
  Select * from TB

بس جرب لعلك تفلح في المحاولة .. و الله يوفقك .. ;)

تم تعديل هذه المشاركة بواسطة imadouzoun في 5 مارس 2006 في 02:39

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#5

شكرا لكم جميعا

أنا عرفت الخطأ يلي عامله

لما بدأت مناقلة لم أغلقها

Commit Tran

Or

Rollback Tran

و إنما يلي كتبته هو

End Tran

ما كان عم يعطيني أي خطأ لكن

لما كتبت القادح صار يعطيني

خطأ

شكرا لكم جميعا

سلام

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

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