View Full Version : مقدار دهی یک متغیر با مقدار یک فیلد
تبسم ساینا
یک شنبه 03 خرداد 1394, 15:31 عصر
سلام .. من یه دستور Select نوشتم و میخوام بعد از اینکه این select اجرا شد , روی یکی از فیلدهاش عملیات انجام بدم.درواقع میخوام بدونم چجوری میتونم متغیر @script رو به ItemScript مقدار دهی کنم و بعد از select ازش استفاده کنم ؟
DECLARE @Exists BIT = 0 ,@Script VARCHAR(MAX)
SELECT p.object_id ID,
p.name ItemName,
s.definition ItemScript,
@Exists Existancy
FROM sys.procedures P
JOIN sys.sql_modules s
ON s.object_id = p.object_id
WHERE p.name NOT LIKE 'diagram'
pezhvakco
دوشنبه 04 خرداد 1394, 20:38 عصر
اگر خروجی دستور شما فقط یک ردیف باشه
شاید
DECLARE @Exists BIT = 0 ,@Script VARCHAR(MAX)
SELECT @Script = s.definition
FROM sys.procedures P
JOIN sys.sql_modules s
ON s.object_id = p.object_id
WHERE p.name NOT LIKE 'diagram'
soheileee
سه شنبه 05 خرداد 1394, 02:40 صبح
راستش درست متوجه نشدم که می خوای چکار کنی با این کوئری.
اما با توجه به ساختارش حدس میزنم که می خوای یه سری SP رو اجرا از طریق کوئری که نوشتی اجرا کنی چون در ستون ItemScript کدهای مربوط به SP ها رو انتخاب کردی و به نظر میاد که می خوای اجراشون کنی.
پس با این پیشفرض که حدسم درسته پاسخت رو می دم.
DECLARE @Exists BIT = 0,
@Script VARCHAR(MAX);
WITH cte
AS (SELECT p.object_id ID,
p.NAME ItemName,
s.definition ItemScript,
@Exists Existancy
FROM sys.procedures P
JOIN sys.sql_modules s ON s.object_id = p.object_id
WHERE p.NAME NOT LIKE 'diagram')
SELECT @Script = isnull(@Script, '') + ItemScript
FROM cte
PRINT @Script
--exec(@Script)
خط
exec(@Script) رو کامنت کردم چون شاید مایل باشی که اول نتیجه رو ببینی و بعد اجراش کنی.
اگه تعداد زیادی SP داشته باشی و کدهات طولانی بشه ممکنه توی SSMS تمام کدها رو نشون نده، اما وقتی EXEC می کنی کامل اجراشون می کنه.
امیدوارم کمکی کرده باشم.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.