ورود

View Full Version : یک sp چند منظوره



rezaei manesh
یک شنبه 08 مرداد 1385, 17:13 عصر
سلام
من چند تا جدول دارم که همشون 3 تا فیلد دارند و می خوام یک پروسیجر بنویسم که یک رکورد به هر کدوم اونا که خواستم اضافه کنه به طوری که اسم جدول و فیلد ها و مقادیر اونها رو بدم و اون اضافه کنه
این رو هم نوشتم اما برای متن های فارسی علامت سوال میزنه

CREATE PROCEDURE SpInsertDefTables (
@StrTblName nvarchar(25),
@FldName1 nvarchAR(25),
@FldName2 nvarchAR(25),
@Fldvalue1 nvarchar(10),
@Fldvalue2 nvarchar(100),
@hasExit bit OUTPUT)

AS

DECLARE @StrExe AS NVARCHAR(400)

SET @StrExe= 'SELECT ' + @FldName1 + ' FROM ' + @strTblName + ' WHERE
' + @FldName1 + ' = '+CAST(@Fldvalue1 AS VARCHAR(10))
execute sp_executesql @StrExe
if @@ROWCOUNT >0
bEGIN
SET @hasExit=1
END
ELSE
BEGIN
SET @StrExe='INSERT INTO ' + @strTblName + ' ('+ @FldName1+','+@FldName2+' , RowLuck) '+
' VALUES ( '''+ @Fldvalue1+''','''+@Fldvalue2 +''',0)'
execute sp_executesql @StrExe
SET @hasExit =0

END
GO

majid_afra222
یک شنبه 08 مرداد 1385, 17:23 عصر
سلام
N یادت رفته عزیزم.
یعنی قبل از فیلدهای متنی N بذار.


SET @StrExe='INSERT INTO ' + @strTblName + ' ('+ @FldName1+','+@FldName2+' , RowLuck) '+
' VALUES ( N'''+ @Fldvalue1+''',N'''+@Fldvalue2 +''',0)'
execute sp_executesql @StrExe

rezaei manesh
یک شنبه 08 مرداد 1385, 18:03 عصر
سلام
N رو گذاشته بودم اما نه اینجایی که شما گذاشتید فکر کنم با کد شما مشکلم حل بشه خیلی خیلی متشکرم

rezaei manesh
یک شنبه 08 مرداد 1385, 18:59 عصر
سلام
آقا نشد ظاهراً جای این N درست نیست هر جا می زارم نمیشه ؟ چکار کنم؟؟؟

AminSobati
یک شنبه 08 مرداد 1385, 23:55 عصر
N باید درست قبل از String باشه:


INSERT MyTable(Col1) VALUES(N'فارسی')

majid_afra222
دوشنبه 09 مرداد 1385, 07:46 صبح
سلام
N یادت رفته عزیزم.
یعنی قبل از فیلدهای متنی N بذار.


SET @StrExe='INSERT INTO ' + @strTblName + ' ('+ @FldName1+','+@FldName2+' , RowLuck) '+
' VALUES ( N'''+ @Fldvalue1+''',N'''+@Fldvalue2 +''',0)'
execute sp_executesql @StrExe


سلام
شرمنده یه چیز کوچولوش یادم رفته بود (این دیگه درسته) :



SET @StrExe=N'INSERT INTO ' + @strTblName + ' ('+ @FldName1+','+@FldName2+' , RowLuck) '+
' VALUES ( N'''+ @Fldvalue1+''',N'''+@Fldvalue2 +''',0)'
execute sp_executesql @StrExe

یعنی خود @StrExe هم به یه N در متن خودش هم احتیاج داره.

rezaei manesh
چهارشنبه 11 مرداد 1385, 10:50 صبح
سلام
این رو می دونستم
INSERT MyTable(Col1) VALUES(N'فارسی')
اما مشکل وقتی بود که تویه متغیر قرار می دادم
اقا مجید من دستور اول شما رو توی کویری انالیزر ارجرا می کردم درست کار نمی کرد اما وقتی که اونو بردک تو برنامه مشکل حل شد
دستور جدید تون رو هم امتهان می کنم از هر 2 شما متشکرم