带列参数的T_SQL函数

时间:2018-08-14 15:00:11

标签: sql sql-server function tsql parameters

我构建了一个sql函数,该函数从表中获取一些值

Table Schema

像DS_Consultor,No_Periodo和No_HORAS_REG这样的函数可用于计算每个工人每月的总工作时间,然后使用此函数计算每个条目的工作百分比:

ALTER FUNCTION [dbo].[CAL]
(
    @EMP NVARCHAR(70),
    @PER NVARCHAR(50),
    @HORAS DECIMAL(18,1)
)
RETURNS @RES TABLE 
(   
    RES DECIMAL(18, 1)
)
AS
BEGIN
DECLARE @TEMPTABLE TABLE
(
    DS_CONSULTOR NVARCHAR(70),
    NO_PERIODO NVARCHAR(50),
    RECUENTO DECIMAL(18,1)
)

INSERT @tempTable
SELECT OC.DS_CONSULTOR, OC.NO_PERIODO, SUM(OC.NO_HORAS_REG) AS RECUENTO
FROM Occupation OC
GROUP BY OC.DS_CONSULTOR, OC.NO_PERIODO

INSERT  @RES
    SELECT @HORAS/T1.RECUENTO AS RES
    FROM @tempTable T1
    WHERE T1.DS_CONSULTOR=@EMP AND T1.NO_PERIODO=@HORAS

   RETURN
END

但是我无法添加计算列所需的列参数

SELECT cal.RES
FROM Occupation OC
CROSS APPLY CAL(DS_CONSULTOR, NO_PERIODO, NO_HORAS_REG)--This outputs 'Error 
converting data type nvarchar to numeric.'

参数是否有问题?或者是函数inpu / output?

0 个答案:

没有答案