2017-08-03 42 views
0
Declare @projeId Nvarchar(50) 
Declare @creatorId Nvarchar(50) 
Declare @users Nvarchar(50) 
Declare @subject Nvarchar(50) 

Set @subject ='' 
Set @users = 'kemalaydik' 
Set @projeId = '' 
Set @creatorId = 'kemalaydik' 

select * 
    from (select STUFF((
      SELECT ',' + u.userid 
      from Users u, AuTable a 
       where ((a.isAllUsers = 1) or 
         (a.DepartmentId is not null and u.DepartmentId = a.DepartmentId) or 
         (a.userId is not null and u.userId= a.UserId)) and 
         a.actionId = ac.ActionId 
        FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'') responsibleId, 
       ac.* 
       from Actions ac) x 
     where (x.ProjectId = @projeId or @projeId = '') and 
       (x.CreatorId = @creatorId or @creatorId='') and 
       ((x.responsibleId like '%,'+ @users+ ',%' or 
        x.responsibleId like '%,'+ @users or 
        x.responsibleId like @users+ ',%' or 
        x.responsibleId = @users or @users='') and 
       ([email protected] or @subject='')) 

我做了這個代碼,但我的老師對我說轉換爲「存儲過程」與輸入我怎麼能做到這一點你們可以幫助我嗎?我的查詢轉換「存儲過程」與輸入

+0

看看這個[文章](https://docs.microsoft.com/en-us/sql/relational-databases/stored-procedures/create-a-stored-procedure),從微軟。 [指定參數](https://docs.microsoft.com/zh-cn/sql/relational-databases/stored-procedures/specify-parameters)部分處理輸入 - 即將值傳遞給過程。 –

回答

0
CREATE PROCEDURE test_procedure (@projeId Nvarchar(50), @creatorId Nvarchar(50), @users Nvarchar(50), @subject Nvarchar(50)) 
AS 
BEGIN 


select * 
    from (select STUFF((
      SELECT ',' + u.userid 
      from Users u, AuTable a 
       where ((a.isAllUsers = 1) or 
         (a.DepartmentId is not null and u.DepartmentId = a.DepartmentId) or 
         (a.userId is not null and u.userId= a.UserId)) and 
         a.actionId = ac.ActionId 
        FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'') responsibleId, 
       ac.* 
       from Actions ac) x 
     where (x.ProjectId = @projeId or @projeId = '') and 
       (x.CreatorId = @creatorId or @creatorId='') and 
       ((x.responsibleId like '%,'+ @users+ ',%' or 
        x.responsibleId like '%,'+ @users or 
        x.responsibleId like @users+ ',%' or 
        x.responsibleId = @users or @users='') and 
       ([email protected] or @subject='')) 
END 
GO 
EXEC test_procedure '', 'kemalaydik', '', 'kemalaydik'