View Full Version : مشکل در SP
  
FirstLine
پنج شنبه 29 بهمن 1383, 14:45 عصر
با سلام
   این روال را در QueryAnalayzer که اجرا میکنم پیغام خطای زیر را میدهد!
   ایراد از چیه؟
"اگرمستاجر ضمن عقد اجاره تصریح نماید که وجهی از بابت سر قفلی به موجر نپرداخته است وهنگام تخلیه 
 مورد اجاره حق دریافت سر قفلی را ندارد آیا این امر مسقط حق سر قفلی او خواهد بود یا نه ؟"
Server: Msg 7631, Level 15, State 1, Procedure dad_Law_Mortabet_List, Line 13
Syntax error occurred near 'ضمن'. Expected ''''' in search condition '"اگرمستاجر ضمن عقد اجاره تصریح نماید که وجهی از بابت سر قفلی به موجر نپرداخته است وهنگام تخلیه 
 مورد اجاره حق دریافت سر قفلی را ندارد آیا این امر مسقط حق سر قفلی او خواهد بود یا نه ؟"'.
با تشکر
ehsan707
پنج شنبه 29 بهمن 1383, 17:10 عصر
کدوم روال؟
FirstLine
جمعه 30 بهمن 1383, 08:17 صبح
با سلام
  ببخشید یادم رفت . :oops: 
CREATE PROCEDURE dad_Law_Mortabet_List @v_Law_Code [bigint] --, @SUM int OUTPUT , @v_i int OUTPUT
AS
	--Read Law_Title
	Declare @v_Str_Title nvarchar (500)
	SELECT @v_Str_Title=Law_Title FROM  Law_Laws WHERE Law_Code=@v_Law_Code
	Set @v_Str_Title= '"%'+ @v_Str_Title + '%"'
	Print @v_Str_Title
	INSERT INTO Law_Mortabet (Mortabet_LawCode_Main, Mortabet_LawCode_Target) SELECT @v_Law_Code,Law_Code FROM Law_Laws WHERE  CONTAINS(Law_Text,   @v_Str_Title )
GO
 خطا هم که بالاتر هست
با تشکر
AminSobati
شنبه 01 اسفند 1383, 00:30 صبح
با توجه به Topicهای دیگری که داشتین و پاسخهایی که دریافت کردین، آیا هنوز در این قسمت مشکلی هست یا برطرف شده؟
FirstLine
شنبه 01 اسفند 1383, 08:49 صبح
با سلام
   با تشکر از راهنمایی شما استاد عزیز
   متاسفانه با یه مشکل بزرگ روبرو شده ام 
   من یه بانک قانون با تعداد رکورد بالا دارم 
    یه روال بصورت زیر دارم 
CREATE PROCEDURE dad_Law_Mortabet_List @v_Law_Code [bigint] --, @SUM int OUTPUT , @v_i int OUTPUT
AS
	--Read Law_Title
	Declare @v_Str_Title nvarchar (500)
	SELECT @v_Str_Title=Law_Title FROM  Law_Laws WHERE Law_Code=@v_Law_Code
	Set @v_Str_Title= '"'+ @v_Str_Title + '"'
	Print @v_Str_Title
	INSERT INTO Law_Mortabet (Mortabet_LawCode_Main, Mortabet_LawCode_Target) SELECT @v_Law_Code,Law_Code FROM Law_Laws WHERE  CONTAINS(Law_Text,   @v_Str_Title )
GO
  متاسفانه وقتی به یک سری از رکوردها میرسه این پیغام را میدهد و از حلقه واقع در کرسر خارج میشه و این مشکل سازه و در پی این هستم که راهی پیدا کنم تا در زمان بروز این خطا ، خطا را نادیده و به سراغ رکورد بعدی برود
پیغام خطا
'قانون آئین دادرسی دادگاههای عمومی و انقلاب درامورکیفری'
Server: Msg 7631, Level 15, State 1, Procedure dad_Law_Mortabet_List, Line 13
Syntax error occurred near 'آئین'. Expected ''''' in search condition ''قانون آئین دادرسی دادگاههای عمومی و انقلاب درامورکیفری''.
  روال  را در این کرسر صدا میزنم
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO
Use DadAfzar
GO
DECLARE Cursor_Law_Mortabet CURSOR
	LOCAL
	FOR SELECT Law_Code FROM Law_Laws
DECLARE @v_Law_Code [bigint]
-- Create the cursor set
OPEN Cursor_Law_Mortabet
	DECLARE @counter int
	SET @counter = 0
	PRINT getdate()
	WHILE @counter < 5 
	BEGIN
-- Retrieve a row into the variables
		FETCH Cursor_Law_Mortabet INTO @v_Law_Code
		Execute dad_Law_Mortabet_List 	@v_Law_Code
		
		SET @counter = @counter + 1
		PRINT @v_Law_Code
	END		
-- Release the cursor set
CLOSE Cursor_Law_Mortabet
-- Release the cursor
DEALLOCATE Cursor_Law_Mortabet
	PRINT getdate()
   
   مشکل اینه که باید تا دوشنه این کار را تمام کنم
   از راهنمایی و توجه شما بسیار سپاسگزارم :flower: 
با تشکر
AminSobati
شنبه 01 اسفند 1383, 21:13 عصر
دوست خوبم،
اگرچه یقین ندارم که هسته اصلی اشکال رو پیدا کرده باشم، اما تست این ضرر نداره(فقط Replace اضافه شده به SP):
ALTER PROCEDURE dad_Law_Mortabet_List @v_Law_Code [bigint] --, @SUM int OUTPUT , @v_i int OUTPUT 
AS 
   --Read Law_Title 
   Declare @v_Str_Title nvarchar (500) 
   SELECT @v_Str_Title=Law_Title FROM  Law_Laws WHERE Law_Code=@v_Law_Code 
   Set @v_Str_Title= REPLACE (@v_Str_Title,'''','') 
   Set @v_Str_Title= '"'+ REPLACE (@v_Str_Title,'"','') + '"' 
   Print @v_Str_Title 
   INSERT INTO Law_Mortabet (Mortabet_LawCode_Main, Mortabet_LawCode_Target) SELECT @v_Law_Code,Law_Code FROM Law_Laws WHERE  CONTAINS(Law_Text,   @v_Str_Title ) 
GO
FirstLine
یک شنبه 02 اسفند 1383, 08:47 صبح
با سلام
   با تشکر از راهنمایی شما استاد عزیز 
   من در یک روال دیگه ابتدا تمام  ' , "  - _ « »  و Enter های داخل @v_Str_Title یا Law_Title  را حذف کرده ام
با تشکر
AminSobati
یک شنبه 02 اسفند 1383, 18:01 عصر
پس پیشنهاد میکنم SP رو از طریق Debug Interface سطر به سطر اجرا کنین تا دقیقا ببینین کدوم مقادیر باعث بروز اشکال میشن.
FirstLine
یک شنبه 02 اسفند 1383, 18:42 عصر
با سلام
   وقتی به این رکورد میرسه  پیغام زیر را میدهد:
پیغام خطا
'قانون آئین دادرسی دادگاههای عمومی و انقلاب درامورکیفری'
Server: Msg 7631, Level 15, State 1, Procedure dad_Law_Mortabet_List, Line 13
Syntax error occurred near 'آئین'. Expected ''''' in search condition ''قانون آئین دادرسی دادگاههای عمومی و انقلاب درامورکیفری''.
با تشکر
AminSobati
یک شنبه 02 اسفند 1383, 20:10 عصر
دوست من، به نظر میرسه خود این Title دارای علامت ' هستش. یکبار اون رو دستی اصلاح کنین و بعد از Rebuild کردن و Full Population، اجرای SP رو آزمایش کنین و ببینین آیا باز هم سر همین رکورد به اشکال بر میخورین یا نه..
FirstLine
شنبه 15 اسفند 1383, 12:26 عصر
با سلام
    مشکل اولیه بخاطر اینه که داخل  فیلد Title  کلید Enter هم وجود دارد و چون من در کد  
INSERT INTO Law_Mortabet (Mortabet_LawCode_Main, Mortabet_LawCode_Target) SELECT @v_Law_Code,Law_Code FROM Law_Laws WHERE  CONTAINS(Law_Text,   @v_Str_Title ) 
   از 
CONTAINS(Law_Text,   @v_Str_Title )
   استفاده کرده ام در برابر کد Enter خطا نشان میدهد   :mad: 
   
   اما با توجه به راهنمایی دوستان زمانی هم که خواستم از Transaction استفاده کنم باز هم پیغام خطای اینتر را میدهد و نشد گفتم شاید ایراد از کد من باشه (کد زیر):
	
	Print @v_Str_Title
		BEGIN TRANSACTION  
			INSERT INTO Law_Mortabet (Mortabet_LawCode_Main, Mortabet_LawCode_Target) SELECT @v_Law_Code , Law_Code FROM Law_Laws WHERE Law_Text Like @v_Str_Title  --CONTAINS(Law_Text,   @v_Str_Title )
			IF @@ERROR <> 0
				ROLLBACK TRANSACTION
			else
				COMMIT TRANSACTION
  لطفا راهنمایی بفرمایید. :oops:  :flower: 
با تشکر
esi022
شنبه 15 اسفند 1383, 12:52 عصر
http://www.windowsitpro.com/SQLServer/Article/ArticleID/20699/20699.html
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.