如何正确使用输出参数作为变量
我有这个代码
DECLARE @columnName varchar(25)
DECLARE @cursor CURSOR
DECLARE @sql nvarchar(1000)
DECLARE @tableName as nvarchar(30)
DECLARE @PartNo as nvarchar(30)
DECLARE @value as integer
set @PartNo = 'partnumber'
set @tableName = 'sometable'
SET @cursor = CURSOR FOR
SELECT c.name
FROM sys.columns c
INNER JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.object_id = (SELECT object_id FROM sys.tables
WHERE name = @tableName)
AND c.name NOT IN ('something')
OPEN @cursor
FETCH NEXT FROM @cursor INTO @columnName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = 'select sum('[email protected]+') from checktime where partNo = '''[email protected]+''''
EXEC sp_executesql @sql, N'@columnName varchar(25), @PartNo nvarchar(30), @value int OUTPUT',
@columnName,
@PartNo,
@value OUTPUT
FETCH NEXT FROM @cursor INTO @columnName
END
CLOSE @cursor
DEALLOCATE @cursor
这段代码的问题是,即使我不想输出变量,它也已经输出了。我想使用这样的代码
DECLARE @columnName varchar(25)
DECLARE @cursor CURSOR
DECLARE @sql nvarchar(1000)
DECLARE @tableName as nvarchar(30)
DECLARE @PartNo as nvarchar(30)
DECLARE @value as integer
set @PartNo = 'partnumber'
set @tableName = 'sometable'
SET @cursor = CURSOR FOR
select c.name from sys.columns c inner join sys.tables t on c.object_id = t.object_id
where c.object_id = (select object_id from sys.tables where name = @tableName )
and c.name not in ('something')
OPEN @cursor
FETCH NEXT
FROM @cursor INTO @columnName
WHILE @@FETCH_STATUS = 0
BEGIN
set @sql = 'select sum('[email protected]+') from checktime where partNo = '''[email protected]+''''
EXEC sp_executesql @sql, N'@columnName varchar(25), @PartNo nvarchar(30), @value int OUTPUT',
@columnName,
@PartNo,
@value OUTPUT
select case when @value > 0 then 'YEY' end
FETCH NEXT
FROM @cursor INTO @columnName
END
CLOSE @cursor
DEALLOCATE @cursor
我正在创建一个存储过程,它将搜索列名是否为NULL,如果是,我会将其放入select语句中。我正在构建一个动态SQL,其中输出将只生成所有非空的表,但这个任务,我将自己创建它,我只想知道我如何操作输出变量。
转载请注明出处:http://www.fymidi.com/article/20230526/1355188.html