首页 > 解决方案 > 具有列参数的 T_SQL 函数

问题描述

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

表架构

例如 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.'

参数有什么磨损还是输入/输出功能?

标签: sqlsql-serverfunctiontsqlparameters

解决方案


推荐阅读