2012-03-07 2 views
0

Ok 저장 프로 시저에 대해 많이 알지 못하지만 누구나 SP로 쓸 수있는 방법을 알고 있습니다. 나는 다소 거기에 도착하고있다라고 생각한다. 그러나 아주. ! 기본적으로 내가 쿼리 문이 올바른지 가정저장 프로 시저 Create Prob

CREATE PROCEDURE sp_executesql 
as 
DECLARE 
@cols AS NVARCHAR(MAX), 
@y AS INT, 
@sql AS NVARCHAR(MAX); 

-- Construct the column list for the IN clause 
SET @cols = STUFF(
(SELECT N',' + QUOTENAME(w) AS [text()] 
FROM (SELECT DISTINCT WeekNo AS W FROM dbo.Items) AS W 
ORDER BY W 
FOR XML PATH('')), 
1, 1, N''); 


-- Construct the full T-SQL statement 
-- and execute dynamically 
SET @sql = N'SELECT * 
      FROM (SELECT ItemNo, WeekNo, Value 
        FROM dbo.Items) AS I 
      PIVOT(SUM(Value) FOR WeekNo IN(' + @cols + N')) AS P;'; 

EXEC sp_executesql @sql; 
GO 

답변

0

:)를 만들 내 쿼리에 붙여 넣을 필요가 있고 당신은 다음과 같이 될 것입니다 단지 SP 구조를 필요 :

는 절차의 SP_NAME 을 CREATE @ 변수 1 유형 [입/출력] 로 끝나는 --query 시작

// 실행할 SP EXEC SP_NAME 'valueForVariable1'

도움이 되었기 바랍니다.

0

알아보기 증명 된 sp_executesql 이름을 지정하지 말고 get_items 또는 다른 이름을 지정하십시오.

새로운 절차 :

CREATE PROCEDURE get_items 

as 
declare @cols AS NVARCHAR(MAX), 
@y AS INT, 
@sql AS NVARCHAR(MAX) 

SET @cols = STUFF((SELECT N',' + QUOTENAME(w) AS [text()] 
FROM (SELECT DISTINCT week_no AS W FROM weekly_items) AS W 
ORDER BY W 
FOR XML PATH('')),1, 1, N''); 

SET @sql = N'SELECT * 
FROM (SELECT item_no, week_no, totval 
FROM weekly_items) AS I 
PIVOT(SUM(totval) FOR week_no IN(' + @cols + N')) AS P;'; 

EXEC sp_executesql @sql 

GO