PDA

View Full Version : ریختن خروجی استاتیک یک کوئری اجرا شده توسط EXECUTE توی پارامتر



reza_rad
یک شنبه 24 دی 1385, 07:08 صبح
سلام.خسته نباشید.

من یک کوئری رو با EXECUTE می کنم و نتیجه میده بدون مشکل. مثلا کوئری زیر:


EXECUTE('select count(*) as cnt from '+@TableName )


حالا می خوام این نتیجه رو توی یک پارامتر بریزم.ولی راهی براش پیدا نکردم! اگه راهی غیر از temp table ها برای اینکار سراغ دارید ممنون میشم بگید.

با سپاس فراوان

whitehat
یک شنبه 24 دی 1385, 07:45 صبح
اگر دقیقا این کوئری هست می توانید از کد زیر استفاده کنید.با اجرا EXECUTE محدوده متغیر های شما تمام می شود.شما چرا می خواهید با استفاده از Execute دستور Select را اجرا کنید؟


DECLARE @MyCount INT
select @MyCount=count(*) from YourTable
PRINT @MyCount

reza_rad
یک شنبه 24 دی 1385, 07:54 صبح
سلام وباتشکر از توجهت WhiteHat جان

این روش مشکلی که داره اینه که نمیشه اسم جدول متغیر باشه...

من از یه جایی اسم جداول رو باید بخونم که تعدادشون هم کم نیست.بعد روی تک تک شون یکسری محاسباتی مثل همین count انجام بدم و نتیجه رو مقایسه کنم و ...

شما راه دیگه ای سراغ دارید که مشکل رو حل کنه؟

rezaei manesh
یک شنبه 24 دی 1385, 09:10 صبح
سلام
با Curser نمی تونید این کار رو انجام بدید؟ فکر کنم بتونید اما شاید بهینه نباشه!

reza_rad
یک شنبه 24 دی 1385, 09:14 صبح
سلام
با Curser نمی تونید این کار رو انجام بدید؟ فکر کنم بتونید اما شاید بهینه نباشه!



یعنی چه جوری؟
با کرسر داخل جدول می تونم حرکت کنم ولی اینکه اسم جدول رو توی کوئری بصورت پارامتر بدم که نمیشه! شاید هم منظورتون رو متوجه نشدم. اگه میشه توضیح بیشتر بدید...

باتشکر

reza_rad
یک شنبه 24 دی 1385, 09:30 صبح
راهش پیدا شد:

از Expert-Exchange :



here is one example

\-- return a value from dynamic sql


Use Northwind

CREATE PROC TEST(
@DATABASENAME VARCHAR(30),
@COUNTOUT INT OUTPUT
)
AS
BEGIN
DECLARE @v_SQL nVARCHAR(4000)
DECLARE @COUNT INT


SET @V_SQL='SELECT @COUNT=COUNT(*) FROM '+@DATABASENAME+'..Authors'

EXEC SP_EXECUTESQL @V_SQL,N'@COUNT INT OUTPUT',@COUNT OUTPUT
SET @COUNTOUT=@COUNT

RETURN @countout
END

rezaei manesh
یک شنبه 24 دی 1385, 09:44 صبح
راهی رو که پیدا کردید بسیار عالی هست
من چون با کرسر ها زیاد کار نکردم نمی دونستم که میشه برای یک کرسر کویری پویا نوشت یا نه بخاطر همین جمله رو سوالی مطرح کردم که شما یه نظر به کرسر ها هم داشته باشید و با توجه به اطلاعات بالای شما میدونستم که خیلی سریعتر از ما می تونید مشکل رو حل کنید.
با تشکر که نتیجه کار رو اینجا گذاشتید.

Kamyar.Kimiyabeigi
یک شنبه 24 دی 1385, 09:53 صبح
من چون با کرسر ها زیاد کار نکردم نمی دونستم که میشه برای یک کرسر کویری پویا نوشت یا نه.
بله جناب آقای رضایی منش برای کرسرها هم میشه کویری پویا نوشت