ورود

View Full Version : درخواست رفع خطا



hrj1981
دوشنبه 18 آذر 1392, 08:26 صبح
با سلام ،لطف ميكنيد خطاي كدهاي زير رابه من بگيد يا روش صحيح نوشتن اونرو

ALTER PROCEDURE [dbo].[User_Viewer]
@Level_ID VARCHAR(5)="3"
WITH RECOMPILE
AS
BEGIN
IF EXISTS (@Level_ID = '1')
SELECT
dbo.Tbl_Users.User_ID AS [شناسه کاربر],
dbo.Tbl_Users.User_Description AS [مشخصات کاربر],
dbo.Tbl_Users.School_Name AS [مرکز فعالیت],
dbo.Tbl_Users.Level_Name AS [سطح کاربر],
dbo.Tbl_Users.Level_New AS [دسترسی ایجاد],
dbo.Tbl_Users.Level_Edit AS [دسترسی ویرایش],
dbo.Tbl_Users.Level_Delete AS [دسترسی حذف],
dbo.Tbl_Users.Level_Print AS [دسترسی چاپ],
dbo.Tbl_Users.Level_Report AS [دسترسی گزارش]
FROM
dbo.Tbl_Users
WHERE
Level_Id IN ('1','2','3')
ELSE
IF EXISTS @Level_ID=2
SELECT
dbo.Tbl_Users.User_ID AS [شناسه کاربر],
dbo.Tbl_Users.User_Description AS [مشخصات کاربر],
dbo.Tbl_Users.School_Name AS [مرکز فعالیت],
dbo.Tbl_Users.Level_Name AS [سطح کاربر],
dbo.Tbl_Users.Level_New AS [دسترسی ایجاد],
dbo.Tbl_Users.Level_Edit AS [دسترسی ویرایش],
dbo.Tbl_Users.Level_Delete AS [دسترسی حذف],
dbo.Tbl_Users.Level_Print AS [دسترسی چاپ],
dbo.Tbl_Users.Level_Report AS [دسترسی گزارش]
FROM
dbo.Tbl_Users
WHERE
Level_Id IN ('1','2','3')
END

dublsigma
دوشنبه 18 آذر 1392, 10:24 صبح
دقیقا می خواهید چه کاری انجام دهید؟ یک لیست پاس بدین به پروسیجر؟ مثلا levelID هایی انتخاب شود که در لیست 1و2و3 وجود داشته باشند و این لیست هم بصورت یک رشته به پروسیجر پاس داده میشه؟
اگر که نه، این را امتحان کنید:

ALTER PROCEDURE [dbo].[User_Viewer]
@Level_ID VARCHAR(5)='3'
WITH RECOMPILE
AS
BEGIN
SELECT
dbo.Tbl_Users.User_ID AS [شناسه کاربر],
dbo.Tbl_Users.User_Description AS [مشخصات کاربر],
dbo.Tbl_Users.School_Name AS [مرکز فعالیت],
dbo.Tbl_Users.Level_Name AS [سطح کاربر],
dbo.Tbl_Users.Level_New AS [دسترسی ایجاد],
dbo.Tbl_Users.Level_Edit AS [دسترسی ویرایش],
dbo.Tbl_Users.Level_Delete AS [دسترسی حذف],
dbo.Tbl_Users.Level_Print AS [دسترسی چاپ],
dbo.Tbl_Users.Level_Report AS [دسترسی گزارش]
FROM
dbo.Tbl_Users
WHERE
Level_Id = @level_ID

END

hrj1981
دوشنبه 18 آذر 1392, 11:05 صبح
ممنون
ببينيد @Level_ID سه تا عدد يا حالت مختلف داره ، ميخوام هر وقت عدد خاصي اومد select متناسب با اون عدد فعال بشه

dublsigma
دوشنبه 18 آذر 1392, 12:54 عصر
به این شکل

if @level_id = 1
select ....
else if @level_id = 2
select .....
else
select

نیازی به exists نیست. همانطور که متوجه شدید دستور if در T-SQL بدون THEN بکار میره.