고수님들 사용자 정의 함수를 만들고 있는데 도저히 안되는 것이
있어서 질문을 올립니다.
멍청하다고 비웃는것은 상관없으니 지발 답을 구해 주소서~~~
질문의 요지는 함수 파라메터의 조건에 따라서 sql문이 바뀌는
것인데 어떻게 해도 먹질 않네여~~
도와 주소서~~~!!
CREATE FUNCTION UF_GetSum(@V_factory varchar(20),@V_Line_id
varchar(30),@V_oper varchar(30),@V_para varchar(100),@V_Chart_no
varchar(100),@V_equip_model varchar(100),@V_equip_id
varchar(100),@V_vendor varchar(100),@V_Materal
varchar(100),@V_search_period_type
varchar(1),@V_search_period_from varchar(100),@V_search_period_to
varchar(100),@V_spc_flag varchar(1))
RETURNS varchar(20)
AS
BEGIN
Declare @UF_GetSum varchar(20),@Sql VARCHAR(1000)
SET @Sql = N' select '
+ ' Sum(b.test_val) as sum '
--+ ' INTO :'+@UF_GetSum
+ ' from spc_data a, spc_data_sample b '
+ ' where a.test_time=b.test_time'
+ ' and a.lot_id = b.lot_id '
+ ' and a.use_flag = Y '
+ ' and b.use_flag=Y'
+ ' and a.factory =' + @V_factory
+ ' and a.line_id =' + @V_Line_id
+ ' and a.oper =' + @V_oper
+ ' and a.para =' + @V_para
+ ' and a.chart_no =' + @V_Chart_no
IF (@V_equip_model <> '')
BEGIN
Set @Sql = @Sql + ' and a.equip_model =' + @V_equip_model
END
IF (@V_equip_id <> '')
BEGIN
Set @Sql = @Sql + ' and a.equip_model =' + @V_equip_id
END
IF (@V_vendor <> '')
BEGIN
Set @Sql = @Sql + ' and a.vendor =' + @V_vendor
END
IF (@V_Materal <> '')
BEGIN
Set @Sql = @Sql + ' and a.vendor =' + @V_Materal
END
IF (@V_search_period_type = 'D')
BEGIN
Set @Sql = @Sql + ' and a.test_year+a.test_month+a.test_day
between =' + @V_search_period_from + ' and ' +
@V_search_period_to
END
IF (@V_search_period_type = 'W')
BEGIN
Set @Sql = @Sql + ' and a.test_year+a.test_work_week between =' +
@V_search_period_from + ' and ' + @V_search_period_to
END
IF (@V_search_period_type = 'M')
BEGIN
Set @Sql = @Sql + ' and a.test_year+a.test_month between =' +
@V_search_period_from + ' and ' + @V_search_period_to
END
IF (@V_search_period_type = 'Q')
BEGIN
Set @Sql = @Sql + ' and a.test_year+a.test_month between =' +
@V_search_period_from + ' and ' + @V_search_period_to
END
IF (@V_spc_flag <> '')
BEGIN
Set @Sql = @Sql + ' and a.spc_flag =' + @V_spc_flag
END
--EXECUTE @Sql
DECLARE AllDatabases CURSOR for
@Sql
OPEN AllDatabases
FETCH NEXT FROM AllDatabases INTO @UF_GetSum
WHILE (@@FETCH_STATUS = 0)
BEGIN
FETCH NEXT FROM AllDatabases INTO @UF_GetSum
END
CLOSE AllDatabases
DEALLOCATE AllDatabases
RETURN @UF_GetSum
END
|