아래와 같은 함수를 작성 했습니다.
alter function [dbo].[RecCount]
(
@strTableName varchar(32)
)
returns varchar
as
begin
-- 변수 선언
declare @intCount bigint set @intCount = 0
declare @strCount varchar(32)
declare @strQuery varchar(1024)
set @strQuery = 'select count(*) as ' + @strCount + ' from ' + @strTableName
exec @strQuery
return @strCount
end
위와 같은 함수를 이용해서 SQL 쿼리문을 수행 했는데
select dbo.RecCount('tb_stay_lamp'); -- 'tb_stay_lamp'는 테이블 명 즉, 이 테이블에 저장되어 있는 레코드 개수 반환
다음과 같은 에러 메시지가 출력 됩니다.
메시지 2812, 수준 16, 상태 62, 줄 1
저장 프로시저 ''을(를) 찾을 수 없습니다.
그리고, 혹시 위의 함수 내에서 '@strCount' 변수가 문자열로 저장되어 있는데
이를 정수형 값으로 반환할려면 어떻게 하는지요? 물론 위의 선언에서 return varchar --> return bigint로 해야 겠지만
cast 문을 사용했는데, 제가 내공이 부족해서
cast(@strCount as int) 이렇게 작성했는데 에러 나더라구요.
답변 부탁 드립니다. |