morfeo21
18-01-2012, 16:48:23
Hola a todos .Una consulta tengo un store procedure en la cual dentro de mi aplicación la voy atener que llamar varias veces pero el orden en la que los muestro varia según ciertos casos . no se si sea posible mandar por parametro el order by de la tabla relacionada. De no ser asi qu otra salida le puedo dar . en el delphi utlizo componente tibDataSet. o derrepente esta componente tenga alguna propiedad para hacer esto. Gracias de antemando.
codigo pequeño de la Procedure:
ALTER PROCEDURE "SP_SEL_PERSONAL"
(
"ICODPER" VARCHAR(8),
"INOMBRE" VARCHAR(40),
"ITIPTRA" VARCHAR(1),
"IORDEN INTEGER"
)
RETURNS
(
"CODPER" VARCHAR(8),
"APEPAT" VARCHAR(40),
"APEMAT" VARCHAR(40),
"NOMBRE" VARCHAR(40),
"DIRECC" VARCHAR(60)
)
AS
BEGIN
FOR SELECT P.CODPER, P.APEPAT, P.APEMAT, P.NOMBRE, P.DIRECC
FROM PERSONAL P
WHERE ((:ICODPER IS NULL) OR (P.CODPER CONTAINING :ICODPER))
AND ((:INOMBRE IS NULL) OR (P.NOMBRE CONTAINING :INOMBRE))
AND ((:ITIPTRA IS NULL) OR (P.TIPTRA CONTAINING :ITIPTRA))
ORDER BY :iOrden
INTO :CODPER, :APEPAT, :APEMAT, :NOMBRE, :DIRECC
DO SUSPEND;
End;
codigo pequeño de la Procedure:
ALTER PROCEDURE "SP_SEL_PERSONAL"
(
"ICODPER" VARCHAR(8),
"INOMBRE" VARCHAR(40),
"ITIPTRA" VARCHAR(1),
"IORDEN INTEGER"
)
RETURNS
(
"CODPER" VARCHAR(8),
"APEPAT" VARCHAR(40),
"APEMAT" VARCHAR(40),
"NOMBRE" VARCHAR(40),
"DIRECC" VARCHAR(60)
)
AS
BEGIN
FOR SELECT P.CODPER, P.APEPAT, P.APEMAT, P.NOMBRE, P.DIRECC
FROM PERSONAL P
WHERE ((:ICODPER IS NULL) OR (P.CODPER CONTAINING :ICODPER))
AND ((:INOMBRE IS NULL) OR (P.NOMBRE CONTAINING :INOMBRE))
AND ((:ITIPTRA IS NULL) OR (P.TIPTRA CONTAINING :ITIPTRA))
ORDER BY :iOrden
INTO :CODPER, :APEPAT, :APEMAT, :NOMBRE, :DIRECC
DO SUSPEND;
End;