PDA

View Full Version : exec درون متغیر



mah_s63
پنج شنبه 21 دی 1391, 12:56 عصر
من می خوام مقدار خروجی یک exec را درون یک متغیر بریزم.میشه راهنماییم کنید

declare @City as nvarchar(100)

set @City = exec('select User_ID from Users where User_ID=378')
ضمنا خروجی select هم فقط یک رکورد است

mohsen24000
پنج شنبه 21 دی 1391, 14:02 عصر
declare @city nvarchar(100)
declare @user_id int
DECLARE @ParmDefinition nvarchar(100);
set @user_id=378
declare @SQL nvarchar(200)='select @mycity=city from users where user_id=@UID'
SET @ParmDefinition = N'@UID int,@mycity nvarchar(100) OUTPUT';
EXECUTE sp_executesql @SQL,@ParamDefinition,@UID=@user_id,@mycity=@city OutPut
Select @city

محمد سلیم آبادی
پنج شنبه 21 دی 1391, 16:02 عصر
من می خوام مقدار خروجی یک exec را درون یک متغیر بریزم.میشه راهنماییم کنیداین مثالی که آوردین دقیقا همون مشکل اصلی هست یا فقط یک مثاله؟ که بنظرمیرسه فقط یک مثال باشه چرا که:
خروجی select ای که قرار دادین بر اساس توضیحاتتون برابر خواهد بود با عدد 378. پس کافیه با یک دستور SET مقدار 378 را به متغیر City@ انتساب بدین.
ضمن اینکه در اینجا (با این شرایط) نیازی به dynamic نیست. با فرض اینکه مقدار برگشتی select مذکور عددی غیر 378 باشد باز هم میشه با SELECT مقدار برگشتی را به متغیر City@ انتساب داد. یعنی:

SELECT @City = Column_name FROM table_name WHERE conditions_here

mohsen24000
شنبه 23 دی 1391, 09:42 صبح
declare @city nvarchar(100)
declare @user_id int
DECLARE @ParmDefinition nvarchar(100);
set @user_id=378
declare @SQL nvarchar(200)='select @mycity=city from users where user_id=@UID'
SET @ParmDefinition = N'@UID int,@mycity nvarchar(100) OUTPUT';
EXECUTE sp_executesql @SQL,@ParamDefinition,@UID=@user_id,@mycity=@city OutPut
Select @city