【发布时间】:2016-05-19 14:46:03
【问题描述】:
我测试了这个查询,该查询是在另一个线程的帮助下构建的,它工作得很好,将它移到一个存储过程中,我需要向它提供一个参数(EID 的值)。因此,我对完美测试的查询所做的唯一更改是在顶部和底部添加 @param1 参数,并在顶部添加创建过程行。
我无法保存它,因为它在第 4 行和 'n' 声明中窒息 - SQL80001:'n' 不是一个可识别的选项。
要达到这一点,还有很长的路要走。有人可以帮我推过终点吗?
CREATE PROCEDURE [dbo].[UpdateSubIdx]
@param1 varchar(30)
WITH n AS
(
SELECT DID AS DID,
sub_idx AS current_id,
ROW_NUMBER() OVER (PARTITION BY EID ORDER BY alt_sub_idx) AS new_id
FROM GETT_Documents
)
--SELECT * FROM N
UPDATE GETT_Documents
SET sub_idx = n.new_id
FROM GETT_Documents G
JOIN n ON N.DID = G.DID
WHERE EID = 'AC-1.1.i';
---Repeat for the alt sub idx column renumberation
WITH n AS
(
SELECT DID AS DID,
alt_sub_idx AS current_id,
ROW_NUMBER() OVER (PARTITION BY EID ORDER BY sub_idx)*10 AS new_id
FROM GETT_Documents
)
UPDATE GETT_Documents
SET alt_sub_idx = n.new_id
FROM GETT_Documents G
JOIN n ON N.DID = G.DID
WHERE EID = @param1;
问候, 肯...
【问题讨论】:
标签: sql sql-server sql-server-2008 stored-procedures