Regrese a su llamado procedimiento get_po_header_data
y modificarlo. Empiece por el LOGINNAME
columna de la tabla de salida para FULLNAME
. Cambie la longitud de salida a 256. Esto es necesario para que coincida con la estructura de salida esperada más adelante.
Cambie la última instrucción SELECT. Eliminar el LOGINNAME
columna de la lista de campos y llame a la función de escala que creó anteriormente. Asegúrese de pasar el NAME.FIRST
, NAME.MIDDLE
y NAME.LAST
columnas de nombre para la función de escalado de llamadas.
El código completo debería verse muy similar a esto.
PROCEDURE "get_po_header_data" (
OUT EX_TOP_3_EMP_PO_COMBINED_CNT TABLE(
FULLNAME NVARCHAR(256),
CREATE_CNT INTEGER,
CHANGE_CNT INTEGER,
COMBINED_CNT INTEGER ) )
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER
--DEFAULT SCHEMA <default_schema_name>
READS SQL DATA AS
BEGIN
po_create_cnt = SELECT COUNT(*) AS CREATE_CNT, "HISTORY.CREATEDBY.EMPLOYEEID" AS EID
FROM "PO.Header" WHERE PURCHASEORDERID IN (
SELECT PURCHASEORDERID
FROM "PO.Item"
WHERE "PRODUCT.PRODUCTID" IS NOT NULL)
GROUP BY "HISTORY.CREATEDBY.EMPLOYEEID";
po_change_cnt = SELECT COUNT(*) AS CHANGE_CNT, "HISTORY.CHANGEDBY.EMPLOYEEID" AS EID
FROM "PO.Header" WHERE PURCHASEORDERID IN (
SELECT PURCHASEORDERID
FROM "PO.Item"
WHERE "PRODUCT.PRODUCTID" IS NOT NULL)
GROUP BY "HISTORY.CHANGEDBY.EMPLOYEEID";
EX_TOP_3_EMP_PO_COMBINED_CNT =
SELECT "get_full_name"( "NAME.FIRST", "NAME.MIDDLE", "NAME.LAST") as FULLNAME,
crcnt.CREATE_CNT, chcnt.CHANGE_CNT,
crcnt.CREATE_CNT + chcnt.CHANGE_CNT AS COMBINED_CNT
FROM "MD.Employees" as emp
LEFT OUTER JOIN :PO_CREATE_CNT AS crcnt
ON emp.EMPLOYEEID = crcnt.EID
LEFT OUTER JOIN :PO_CHANGE_CNT AS chcnt
ON emp.EMPLOYEEID = chcnt.EID
ORDER BY COMBINED_CNT DESC LIMIT 3;
END