PDA

View Full Version : مشکل فوری



MohammadSoft
چهارشنبه 12 دی 1386, 09:57 صبح
سلام خدمت همه دوستان
من یه جدول دارم که برای یه سری پارامتر به این شکل :

ID - ParameterName - ParamaterValue

مقدار ParamaterValue نام فیلد یکی از جداول من هست(جدول اعضا) ، به عنوان مثال داده های داخلش به این صورت هست :

ID = 1 - ParameterName = Name - ParamaterValue = P_Name

حالا من می خوام یه SP بنویسم که بهش یه نام پارامتر و یه شماره عضویت بدم و اون SP مقدار اون فیلد رو برام برگردونه . این کار رو با FUNCTION به راحتی میشه انجام داد ولی مشکل اینجاست که توی FUNCTION نمیشه از SP_EXEUTESQL برای اجرا کردن دستورات دینامیک استفاده کرد :ناراحت:!
شدیدا به مساعدت دوستان احتیاج دارم .
این هم شبیه کدی است که دارم :


CREATEPROCEDURE [rsa].[GetParameterValue]
@ParameterName NVARCHAR(50),
@MemberCode INT,
@Result NVARCHAR(50)OUTPUT
AS
DECLARE @FieldName VARCHAR(50)
SET @FieldName =''
SELECT @FieldName = ParameterValue FROM Parameter WHERE ParameterName = @ParameterName
DECLARE @QUERY VARCHAR(200)
SET @QUERY ='SELECT '+ @FieldName +' FROM MEMBER WHERE CODE ='+CAST( @MemberCode ASVARCHAR(20))
EXEC(@QUERY)
SET @Result = ?????? -- اینجا نمی دونم چی کار باید بکنم



اردات

JAFO_IRAN
پنج شنبه 13 دی 1386, 11:04 صبح
سلام

خودتون که گفته بودید ExecSQL پس چرا در کد، از Exec استفاده کردید؟ لازمه که Result@ رو هم داخل QUERY@ ببرید و به عنوان پارامتر به ExecSQL معرفی کنید. قبلا یک نمونه از همین داستان رو داشتیم - شاید کمک کنه:

http://barnamenevis.org/forum/showthread.php?t=88796&highlight=sp_executesql

ارادت

MohammadSoft
شنبه 15 دی 1386, 09:37 صبح
سلام دوست عزیز .
ممنونم از جوابت ولی نمیشه @Result رو تو EXEC استفاده کرد چون میگه این متغیر اعلام نشده ! و اگه توی EXEC اعلامش کنم که خطا نده بازم به مقدارش دسترسی ندارم !!
ولی من این مشکل رو با توابع CLR حل کردم .
بازم ممنونم ازتون .
ارادتمند : محمد زنگنه .