2016-09-23 2 views
0


테이블의 이름 인 매개 변수에 따라 행 번호를 다시 지정하는 함수를 만들고 싶습니다. 가능한가? 그렇다면, 어떻게 코드를 변경하는 경우 :SQL Server : 함수에 매개 변수 보내기 - 매개 변수는 테이블 이름입니다.

CREATE FUNCTION MyFunction (@sometable NVARCHAR(50)) 
RETURNS TABLE 
AS 
RETURN SELECT COUNT(*) N_ROWS FROM @sometable 


는 답변을 주셔서 감사합니다.

+0

여기서 동적 SQL을 사용해야 할 것입니다. 자세한 내용은 https://www.mssqltips.com/sqlservertip/1160/execute-dynamic-sql-commands-in-sql-server/를 참조하십시오. –

+0

링크 주셔서 감사합니다. – Arcadio

답변

0

당신은

declare @sql nvarchar(250); 
set @sql = 'SELECT COUNT(*) AS N_ROWS FROM ' + @sometable; 
exec(@sql); 

처럼 이것에 대한 dynamic query를 사용할 필요가 그러나 다시, 당신은 FUNCTION을 만들려고하면 기능의 동적 쿼리를 가질 수 없습니다. 이를 변환하려면 stored procedure

+0

Rahul에게 힌트를 제공해 주셔서 감사합니다. – Arcadio

0

힌트를 주셔서 감사합니다.
나는 그렇게했다 :
....
@ret이
DECLARE의 @Sql NVARCHAR (MAX)
SET의 @Sql를 INT
DECLARE을 BEGIN = + @sometable
'SELECT COUNT (*)는 FROM N_ROWS' EXEC sp_executesql @ret = @sql
RETURN @ret
END;

0

동적 쿼리를 사용할 수 없습니다. 당신은

는 PROC PROC_NAME CREATE 저장 프로 시저에 그 변환 할 수 있습니다 ( @sometable NVARCHAR (50) ) AS ( DECLARE @Name VARCHAR (200) SET @Name = 'SELECT COUNT를 BEGIN *) AS N_ROWS FROM '+ @sometable; EXEC (@ 이름) 끝