PDA

View Full Version : سوال: ایراد این دستور پروسیجر کجاست؟



baran_mehr
شنبه 18 اردیبهشت 1389, 17:51 عصر
سلام دوتان عزیز
چرا از این دستور ایراد میگیره از خروجیش

CREATE PROCEDURE repeteEmailUser
(@username char(20),
@result int output
)
AS
if exists(select * from userinfo where username=@username)
set @result=5
GO

محمد سلیم آبادی
شنبه 18 اردیبهشت 1389, 18:00 عصر
سلام،
کد را بررسی کردم از لحاظ syntax مشکلی دیده نشد.
منظورتون از این ایراد چیه یعنی هنگامی که میخواهین از پارامتر خروجی استفاده کنید جواب نمیگیرید؟

هنگامی که می خواهین پروسیجر را اجرا کنید باید نوع پارامتر ورودی که میدین رو output در نظر بگیرین، یعنی:


EXECUTE repeteEmailUser @username = 'user_name', @result = @output OUTPUT

baran_mehr
شنبه 18 اردیبهشت 1389, 18:19 عصر
هنگامی که می خواهین پروسیجر را اجرا کنید باید نوع پارامتر ورودی که میدین رو output در نظر بگیرین، یعنی:


EXECUTE repeteEmailUser @username = 'user_name', @result = @output OUTPUT
اینجاشو متوجه نشدم!!!
من میخوام فقط یه مقدار بفرستم و اون یه جواب بده مثلا اگر شرط درست بود 5 رو برگردونه
چی باید توی query analyzer بنویسم؟

baran_mehr
شنبه 18 اردیبهشت 1389, 18:46 عصر
اینجوری میتونم تو انالایزر نشون بدم خروجی رو اما چطور تو vb اط اشتفاده کنم انوجا هنوز همون پیغام رو میده

declare @r nvarchar(3)
EXECUTE repeteEmailUser @username = 'jk', @result = @r output
print @r

محمد سلیم آبادی
شنبه 18 اردیبهشت 1389, 23:58 عصر
اینجوری میتونم تو انالایزر نشون بدم خروجی رو اما چطور تو vb اط اشتفاده کنم انوجا هنوز همون پیغام رو میده

کد:

از VB اطلاعی ندارم.
ولی اگر می خواهین SP مقداری برگردونه کافیه در انتهای SP یک SELECT بنویسین. یعنی:

CREATE PROCEDURE repeteEmailUser
(@username char(20)
)
AS
if exists(select * from userinfo where username=@username)
SELECT 5 as Result
GO

baran_mehr
یک شنبه 19 اردیبهشت 1389, 07:26 صبح
توی vb هم حل شد فقط تو کدهام باید تغییراتی میدادم.
ممنون دوست عزیز

baran_mehr
یک شنبه 19 اردیبهشت 1389, 09:40 صبح
دوست عزیز من دو دستور if پشت سر هم میزارم اما همیشه خروجی یه چیزه؟ دلیلش چی میتونه باشه

if exists(select * from userinfo where username=@username and password=@password)
begin
دستورات
end

if not exists(select * from userinfo where username=@username and password=@password)
begin
دستورات
end
این دو تا شرط مخالف هم هست و همیشه باید یه نتیجه داشته باشم

محمد سلیم آبادی
یک شنبه 19 اردیبهشت 1389, 14:08 عصر
نمی دونم ولی چرا اینکار را نمی کنید؟

if exists(select * from userinfo where username=@username and password=@password)
begin
دستورات
end

ELSE
begin
دستورات
end

baran_mehr
یک شنبه 19 اردیبهشت 1389, 16:13 عصر
این کد و هم امتحان کرده بودم
ایراد کد و هم پیدا کردم نوع متغییر nvarchar رو بدون سایز داده بودم که باعث میشد فقط یک کاراکتر بفرسته منم سه ساعت داشتم سر همین قضیه ساده کلانجار میرفم