ورود

View Full Version : ساخت پروسیجر همراه بانام ستون و تیبل متغیر



mhamedm2008
دوشنبه 03 فروردین 1394, 01:39 صبح
با سلام
قصد دارم یک پروسیجر بنویسم که وقتی متغیرهای ورودی آن را واردکردم بتوانیم خروجی بگیرم.می خوام مقدار ستون ها هم دست من باشه
کد زیر رو نشوتم ولی وقتی با VB ورودی ها وارد می کنم، کار نمی کنه و مقدار دقیقا هر مقداریبه @coloomn بدم و به من بر می گردونه
مشکل از کجاست؟؟ میشه همچین کاری کرد؟؟
اگر میخوام نام تیبل هم متغیر باشه باید چی کارکنم؟؟

ALTER proc [dbo].[dlookupsql]

@coloomn varchar(8),
@dlook varchar(20) OUTPUT
as
begin
set @dlook = (SELECT @coloomn FROM user1 where (kod= 8553))
end



login
Set cmd = New ADODB.Command

cmd.CommandText = "dlookupsql"
cmd.CommandType = adCmdStoredProc
cmd.ActiveConnection = Cnxn

cmd.Parameters.Append cmd.CreateParameter("coloomn", adVarChar, adParamInput, 8, "nam_user")
cmd.Parameters.Append cmd.CreateParameter("dlook", adVarChar, adParamOutput, 255, 0)
cmd.Execute
Text7 = cmd.Parameters("dlook").Value

logout

SabaSabouhi
دوشنبه 03 فروردین 1394, 09:52 صبح
با سلام
قصد دارم یک پروسیجر بنویسم که وقتی متغیرهای ورودی آن را واردکردم بتوانیم خروجی بگیرم.می خوام مقدار ستون ها هم دست من باشه
کد زیر رو نشوتم ولی وقتی با VB ورودی ها وارد می کنم، کار نمی کنه و مقدار دقیقا هر مقداریبه @coloomn بدم و به من بر می گردونه
مشکل از کجاست؟؟ میشه همچین کاری کرد؟؟
اگر میخوام نام تیبل هم متغیر باشه باید چی کارکنم؟؟

ALTER proc [dbo].[dlookupsql]

@coloomn varchar(8),
@dlook varchar(20) OUTPUT
as
begin
set @dlook = (SELECT @coloomn FROM user1 where (kod= 8553))
end



login
Set cmd = New ADODB.Command

cmd.CommandText = "dlookupsql"
cmd.CommandType = adCmdStoredProc
cmd.ActiveConnection = Cnxn

cmd.Parameters.Append cmd.CreateParameter("coloomn", adVarChar, adParamInput, 8, "nam_user")
cmd.Parameters.Append cmd.CreateParameter("dlook", adVarChar, adParamOutput, 255, 0)
cmd.Execute
Text7 = cmd.Parameters("dlook").Value

logout

سلام
طبیعی هست که این SP نتونه کار کنه. شما داخل SP خودت از sp_executesql استفاده کن.

صبا صبوحی

mhamedm2008
دوشنبه 03 فروردین 1394, 12:46 عصر
سلام
الان پروسیجر رو به زیرتغییر دادم. مشکل اینجاست اگر خروجی @lookup را نگذارم و از داخل خود SQL اجراش کنم کار می کنه. ولی اگر این پرامتر را اضافه کنم و خروجی می گیرم ، خروجی خالی برمی گردونه.احتمالا توی یه جا اشتباه کردم. مشکل از کجاست؟؟

ALTER proc [dbo].[dlookupsql]

@coloomn varchar(max),
@dlook nvarchar(100) output
as
begin
DECLARE @ParmDefinition nvarchar(500);
declare @temp nvarchar(100);
set @temp =N'SELECT '+@coloomn+' FROM user1 where (kod= 2325)'
SET @ParmDefinition = N'@dlook nvarchar(100) output';
EXECUTE SP_EXECUTESQL @temp ,@ParmDefinition , @dlook output
select @dlook

end

mhamedm2008
دوشنبه 03 فروردین 1394, 14:14 عصر
سلام
بالاخره پس از چند روز که از پروسیجر هیچی بلد نبودم، تونستم بنویسمش:تشویق:
برای بقسه دوستان میزارم که شاید بدردکسی بخوره.
از همگی ممنون :لبخندساده:

ALTER proc [dbo].[dlookupsql]
@tablenam varchar(10),
@shart varchar(50),
@coloomn varchar(50),
@dlook nvarchar(100) output
as
begin
declare @temp nvarchar(100);
set @temp =N'SELECT @dlook='+@coloomn+' FROM '+@tablenam+' where (kod= '+@shart+')'
EXECUTE SP_EXECUTESQL @temp, N'@dlook nvarchar(100) output', @dlook OUTPUT
SELECT @dlook

end