PDA

View Full Version : ایراد در ارتباط با EXECUTE



shahab_ksh
پنج شنبه 15 شهریور 1386, 21:36 عصر
با سلام چطور خروجی این EXECUTE رو به par_out بدم یعنی خروجی



SELECT SCOPE_IDENTITY() as fld_id


و کد کلی من هست



ALTER PROCEDURE dbo.Form_fld_insert

(
@par_id Int,
@par_out Int OUTPUT
)

AS
EXECUTE ('
Declare @temp Nvarchar(100)
Select @temp=''-''
INSERT INTO tbl_form_data_'+@par_id+' (fld_temp) VALUES(@temp)
SELECT SCOPE_IDENTITY() as fld_id
RETURN
')

RETURN

حمیدرضاصادقیان
جمعه 16 شهریور 1386, 16:45 عصر
فکر کنم بتونی به این صورت بنویسی


select @par_out=scope_Identity()

shahab_ksh
جمعه 16 شهریور 1386, 16:59 عصر
نشد

به این شکل هم تغییر دارم بازم نشد :ناراحت:




ALTER PROCEDURE dbo.Form_fld_insert
(
@par_id Int,
@par_out Int OUTPUT
)
AS
DECLARE @strSQL nvarchar(4000)
SELECT @strSQL =
'Declare @temp Nvarchar(100)
Select @temp=''-''
INSERT INTO tbl_form_data_'+@par_id+' (fld_temp) VALUES (@temp)
SELECT @par_out = SCOPE_IDENTITY()
'
EXEC sp_executesql @strSQL,
N'@par_out Int',
@par_out Int OUTPUT
RETURN

supporter
جمعه 16 شهریور 1386, 19:06 عصر
یک نگاه هم به کد زیر بندازید امیدوارم منظورتون رو درست متوجه شده باشم البته شاید بشه بهترش هم کرد:




DECLARE @par_id Int,
@par_out Int,
@Cmd NVARCHAR(1000)
SET @par_id = 1
SET @Cmd =
N'Declare @temp Nvarchar(100)
Select @temp=''-''
INSERT INTO tbl_form_data_' + LTRIM(RTRIM(STR(@par_id))) + ' (Name) VALUES(@temp)
SELECT @OutIdentity = SCOPE_IDENTITY()'
EXECUTE sp_executesql @Cmd,
N'@OutIdentity int OUTPUT',
@OutIdentity = @par_out OUTPUT
SELECT @par_out