Хранимая процедура Create Prob - PullRequest
0 голосов
/ 08 марта 2012

Хорошо, я не знаю много о хранимых процедурах, но кто-нибудь знает, как я мог бы написать это как SP. Я думаю, это вроде как, но не совсем. в основном, что мне нужно вставить в мой запрос, чтобы создать его! :))

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

Ответы [ 2 ]

0 голосов
/ 08 марта 2012

Понял.Только не называйте проверенный 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
0 голосов
/ 08 марта 2012

Предполагая, что оператор запроса корректен, и вам нужна только структура SP, она будет выглядеть следующим образом:

CREATE PROCEDURE SP_NAME @ тип переменной [input / output] as begin --query end

// выполнить SP EXEC SP_NAME 'valueForVariable1'

надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...