请问这个语句到底会出现什么结果啊
SELECT @ids = @ids + CONVERT(VARCHAR,Position_id) + ','
FROM
Position
主要是这句,搞不清什么意思@ids = @ids + CONVERT(VARCHAR,Position_id) + ','
象是循环添加ID,但是没有循环啊 ,请教各位熟悉存储过程的兄弟 完整的是这样的,这个存储过程是在其他存储过程中调用的:
CREATE proc sp_GetAllChildPositionID
@Position_id int
/*======================================================
功能: 得到此职位所有的子职位ID
参数:
@Position_id int : 职位ID
======================================================*/
ASDECLARE @ids VARCHAR(2000)
DECLARE @tmpids VARCHAR(2000)
DECLARE @oldids VARCHAR(2000)
DECLARE @sql nVARCHAR(2000)SET @ids =''
SET @tmpids=''
SET @oldids =''
SELECT @ids = @ids + CONVERT(VARCHAR,Position_id) + ','
FROM
uds_Position
WHERE super_Position_id = @Position_id
and super_Position_id <>Position_id IF LEN(@ids)>0
SET @ids = LEFT(@ids,LEN(@ids)-1)
CREATE TABLE #Position(id int)
SET @oldids = @idsWHILE LEN(@oldids)>0
BEGIN
SET @sql = N'INSERT INTO #Position
SELECT
Position_id
FROM
uds_Position
WHERE super_Position_id in (' + @oldids +')' EXEC (@sql)
SET @tmpids=''
SELECT @tmpids = @tmpids + CONVERT(VARCHAR,id) + ','
FROM #Position
IF LEN(@tmpids)>0
SET @tmpids = LEFT(@tmpids,LEN(@tmpids)-1) SET @oldids = @tmpids
DELETE FROM #Position
SET @ids = @ids + ',' + @tmpids
END IF LEN(@ids)>0
BEGIN
SET @ids = LEFT(@ids,LEN(@ids)-1)
SET @sql =N'SELECT Position_ID FROM uds_Position WHERE Position_id in (' + @ids + ')'
PRINT @sql
EXEC (@sql)
END
ELSE
SELECT Position_ID FROM uds_Position WHERE 1=2
GO
SELECT @ids = @ids + CONVERT(VARCHAR,Position_id) + ','
FROM
Position
主要是这句,搞不清什么意思@ids = @ids + CONVERT(VARCHAR,Position_id) + ','
象是循环添加ID,但是没有循环啊 ,请教各位熟悉存储过程的兄弟 完整的是这样的,这个存储过程是在其他存储过程中调用的:
CREATE proc sp_GetAllChildPositionID
@Position_id int
/*======================================================
功能: 得到此职位所有的子职位ID
参数:
@Position_id int : 职位ID
======================================================*/
ASDECLARE @ids VARCHAR(2000)
DECLARE @tmpids VARCHAR(2000)
DECLARE @oldids VARCHAR(2000)
DECLARE @sql nVARCHAR(2000)SET @ids =''
SET @tmpids=''
SET @oldids =''
SELECT @ids = @ids + CONVERT(VARCHAR,Position_id) + ','
FROM
uds_Position
WHERE super_Position_id = @Position_id
and super_Position_id <>Position_id IF LEN(@ids)>0
SET @ids = LEFT(@ids,LEN(@ids)-1)
CREATE TABLE #Position(id int)
SET @oldids = @idsWHILE LEN(@oldids)>0
BEGIN
SET @sql = N'INSERT INTO #Position
SELECT
Position_id
FROM
uds_Position
WHERE super_Position_id in (' + @oldids +')' EXEC (@sql)
SET @tmpids=''
SELECT @tmpids = @tmpids + CONVERT(VARCHAR,id) + ','
FROM #Position
IF LEN(@tmpids)>0
SET @tmpids = LEFT(@tmpids,LEN(@tmpids)-1) SET @oldids = @tmpids
DELETE FROM #Position
SET @ids = @ids + ',' + @tmpids
END IF LEN(@ids)>0
BEGIN
SET @ids = LEFT(@ids,LEN(@ids)-1)
SET @sql =N'SELECT Position_ID FROM uds_Position WHERE Position_id in (' + @ids + ')'
PRINT @sql
EXEC (@sql)
END
ELSE
SELECT Position_ID FROM uds_Position WHERE 1=2
GO
象是循环添加ID,但是没有循环啊这就是循环,有多少个Position_id循环多少次
EXEC (@sql)
这里不是有了print吗,你可以看看print出来的语句就知道了