다음 저장 프로시 저는 지정된 테이블의 열을 동적으로 결정하고 null이 아닌 모든 열을 반환하지만 동적 프로 시저를 테스트 할 때 결과가 돌아 왔음에도 불구하고 저장된 proc은 null을 반환합니다 자체 쿼리를 동적 쿼리 결과를 올바르게 처리 오전?동적 쿼리에서 출력을 반환하지 않는 SQL Server 2008 저장 프로 시저
CREATE PROCEDURE [dbo].[spGetTables]
(
@TableName varchar(255)
,@ParamOut varchar(2000) OUTPUT
)
AS
declare @CommaString varchar(max)
set @CommaString = ''
Declare @col varchar(255), @cmd nvarchar(max)
declare @colName varchar(2000)
SET @colName = ''
DECLARE getinfo cursor for
SELECT c.name FROM sys.tables t JOIN sys.columns c ON t.Object_ID = c.Object_ID
WHERE t.Name = @TableName
OPEN getinfo
FETCH NEXT FROM getinfo into @col
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @cmd = 'IF NOT EXISTS (SELECT top 1 * FROM [' + @TableName + '] WHERE [' + @col + '] IS NULL or len([' + @col + ']) < 1) BEGIN select ''' + @col + ','' END'
exec sp_executesql @cmd, N'@Result varchar(max) out', @ParamOut out
set @ParamOut = @ParamOut + @CommaString
FETCH NEXT FROM getinfo into @col
END
PRINT 'Result: '[email protected]
CLOSE getinfo
DEALLOCATE getinfo
RETURN 0
, 작동하는 것 같다에
그것을 변경 @ gotqn! – Joelster@gotqn, NULL을 찾으면 @TempParamOut의 값을 유지하므로 @ParamOut을 설정 한 후에 지울 필요가 있습니다. set @ParamOut = ISNULL (@ParamOut, '') + ISNULL (@TempParamOut, '') + @CommaString; \t @TempParamOut = ''; –
@ShaunGroenewald 감사합니다. 나는 그것을 바꿨다. – gotqn