C# 存储过程informix 7.x上的名称列
我在Informix7.x上有一个存储过程,这个存储过程是使用CreateSQLQuery方法在Nhibernate上调用的 问题是存储过程检索到的所有列都具有相同的名称“expresion”,因此在NHibernate上调用存储过程时,无法将这些列映射到实体 是否可以在存储过程中将别名设置为列?或者可以在NHibernate上重命名colums 储存程序:C# 存储过程informix 7.x上的名称列,c#,nhibernate,informix,C#,Nhibernate,Informix,我在Informix7.x上有一个存储过程,这个存储过程是使用CreateSQLQuery方法在Nhibernate上调用的 问题是存储过程检索到的所有列都具有相同的名称“expresion”,因此在NHibernate上调用存储过程时,无法将这些列映射到实体 是否可以在存储过程中将别名设置为列?或者可以在NHibernate上重命名colums 储存程序: CREATE PROCEDURE ConFactPag ( paramCia CHAR(2), pa
CREATE PROCEDURE ConFactPag
(
paramCia CHAR(2),
paramPla CHAR(2),
paramFechaInicial DATE,
paramFechaFinal DATE
)
RETURNING
INT,
CHAR(4),
CHAR(10),
CHAR(100),
CHAR(15),
CHAR(15),
CHAR(100);
DEFINE v_folio INT;
DEFINE v_serie CHAR(4);
DEFINE v_fecha CHAR(10);
DEFINE v_cliente CHAR(110);
DEFINE v_importe CHAR(15);
DEFINE v_saldo CHAR(15);
DEFINE v_pago CHAR(110);
FOREACH cFacturas FOR
SELECT f.fol_fac as v_folio,
f.ser_fac as v_serie,
TO_CHAR(f.fec_fac,'%d-%m-%Y'),
CASE
WHEN TRIM(c.razsoc_cte) <> '' THEN
TRIM(c.razsoc_cte)
ELSE
CASE
WHEN c.ali_cte <> '' THEN
TRIM(C.ali_cte) || ', '
ELSE
''
END || trim(c.nom_cte) || ' ' || TRIM(c.ape_cte)
END AS ncom_cte,
LPAD(f.impt_fac,6,'0')
INTO v_folio,
v_serie,
v_fecha,
v_cliente,
v_importe
FROM factura f,
cliente c
WHERE f.numcte_fac = c.num_cte
and f.tpa_fac = 'C'
and f.cia_fac = paramCia
and f.pla_fac = paramPla
and f.fec_fac >= paramFechaInicial
and f.fec_fac <= paramFechaFinal
--and f.fol_fac = 534896
SELECT SUM(sal_doc)
INTO v_saldo
FROM doctos
WHERE ffac_doc = v_folio and sfac_doc = v_serie and tip_doc = '01';
LET v_pago = '';
IF v_saldo = 0 THEN
SELECT ser_pfac || ' ' || fol_pfac || ' ' || fec_pfac || ' ' ||
imp_pfac
INTO v_pago
FROM pago_fac
WHERE ffac_pfac = v_folio and sfac_pfac = v_serie and numpag_pfac = 1;
END IF;
RETURN v_folio,
v_serie,
v_fecha,
v_cliente,
v_importe,
LPAD(v_saldo,6,'0'),
v_pago
WITH RESUME;
END FOREACH;
END PROCEDURE;
请注意,Informix动态服务器版本7多年来已经失去支持,应该考虑升级到支持的版本。目前的版本是11.70和12.10
在IDS的更高版本中,可以使用RETURNING子句中每个值的“AS”语法来命名存储过程或函数的返回参数。使用上面的示例,这可以写成:RETURNING
INT AS folio,
CHAR(4) AS serie,
CHAR(10) AS fecha,
CHAR(100) AS cliente,
CHAR(15) AS importe,
CHAR(15) AS saldo,
CHAR(100) AS pago;
但是,我不认为IDS版本7中有此功能。您说得对,可以在版本9 o中命名返回的参数,而不是在版本7中,我认为唯一的选项是,在NHibernate中有一些东西可以命名返回的参数,同时获取这些参数请参见西班牙语堆栈溢出。
RETURNING
INT AS folio,
CHAR(4) AS serie,
CHAR(10) AS fecha,
CHAR(100) AS cliente,
CHAR(15) AS importe,
CHAR(15) AS saldo,
CHAR(100) AS pago;