Está en la página 1de 9

Metadatos Mas Utilizados

%COALESCE
Syntax
%COALESCE(expr1, expr2, ...)

Description

Use la funcin %COALESCE para devolver el primer argumento no nulo proporcionado a la


funcin.

Note. Esta funcin meta-SQL no est implementada para COBOL.

Parmetros

expr1. . .exprn
Especifique las expresiones para verificar.
Note.
No puede especificar parmetros de enlace utilizando estas expresiones.

Ejemplo

El siguiente ejemplo usa la tabla PRODUCT_INFO para organizar una venta de liquidacin de
productos. Da un 10 por ciento de descuento a todos los productos con un precio de lista. Si no
hay un precio de lista, el precio de venta es el precio mnimo. Si no hay un precio mnimo, el precio
de venta es 10.

//
%COLESCE(0.10*list_price, min_price, 10) "Sale"
//
SELECT product_id, list_price, min_price, %COLESCE(0.9*list_price,
min_price, 10) "Sale"
from PRODUCT_INFO
where SUPPLIER_ID = 6009;
%Concat
Syntax
string1 %Concat string2

Description
En tiempo de ejecucin, la variable% Concat meta-SQL se reemplaza por el operador de
concatenacin de cadenas apropiado para el sistema de administracin de bases de datos
relacionales (RDBMS) que se est utilizando. Por ejemplo, en DB2, la variable% Concat meta-SQL
se reemplaza con CONCAT, mientras que en Sybase se reemplaza con un +
Esta variable meta-SQL es compatible con las mismas limitaciones que el operador de
concatenacin nativo para el RDBMS donde se est ejecutando el meta-SQL. Por ejemplo,
algunas plataformas le permiten concatenar una cadena con un valor numrico; otros marcan esto
como un error. PeopleTools no intenta verificar ni convertir los tipos de datos de ninguno de los
operandos.

Note. . Concat no est disponible en COBOL, pero el campo DYN-STMT-CONCAT se puede


encadenar en cadenas dinmicas COBOL para resolver en un operador de concatenacin
especfico de la plataforma.

Example
SELECT 'A' %Concat 'B' FROM PS_INSTALLATION. . .

SELECT LAST_NAME %Concat ',' %Concat FIRST_NAME FROM PS_EMPLOYEE


%EffDtCheck
Syntax
%EffDtCheck(recordname [correlation_id1], correlation_id2,
as_of_date)

Description
El constructo% EffDtCheck se expande en una subconsulta de fecha efectiva adecuada para una
clusula Where. El valor de as_of_date se ajusta automticamente en% DateIn a menos que
as_of_date ya est incluido en% DateIn o se refiera a otras columnas de la base de datos.

Note. Esta construccin meta-SQL no est implementada para COBOL.

%EffDtCck solo funciona con fechas efectivas. No toma en cuenta los nmeros de secuencia
efectivos (EFFSEQ). Tampoco hace la comprobacin de estado efectivo (EFF_STATUS).

Parmetros

Nombre de Especifique el nombre del registro para usar como el registro en la verificacin de
Registro fecha efectiva. Esto puede ser una variable de vinculacin, un objeto de registro o
un nombre de registro en la forma recname. No puedes especificar un
REGISTRO. recname, un nombre de registro entre comillas o un nombre de tabla.
Note. Si especifica una variable de vinculacin, debe hacer referencia a un
objeto de registro, no a una variable de cadena.

correlacin_id1 (Opcional) Especifique la letra utilizada dentro de la subseleccin de fecha


efectiva. Si no se especifica este parmetro, se utiliza recordname..
correlacin_id2 Especifique la letra ya asignada al registro principal en la clusula From de la
instruccin SQL.
as_of_date
Especifique la fecha para usar en la fecha efectiva. Esto puede ser una variable
de vinculacin, una variable o una fecha codificada. El valor de as_of_date se
ajusta automticamente en %DateIn a menos que as_of_date ya est incluido en
%DateIn o se refiera a otras columnas de la base de datos.

Ejemplo
La siguiente es una muestra de cdigo genrico:
SELECT. . .
FROM. . .
WHERE %EffDtCheck(recordname correlation_id, as_of_date)
El cdigo de ejemplo se resuelve en el siguiente:
SELECT . . .
FROM. . .
WHERE correlation_id.EFFDT = (SELECT MAX(EFFDT) FROM recordname
WHERE recordname.KEYFIELD1 = correlation_id.KEYFIELD1
AND recordname.KEYFIELD2 = correlation_id.KEYFIELD2
AND. . .
AND recordname.EFFDT <= %DATEIN(as_of_date))

En el siguiente ejemplo, Y Fecha tiene el valor de 01/02/1998. El objeto de ejemplo y Rec tiene un
campo de clave EFFECT.

SQLExec("SELECT FNUM FROM PS_REC A WHERE %EffDtCheck(:1, A, :2)",


&Rec, &Date);
Este cdigo de ejemplo se resuelve en el siguiente:
"Select FNUM from PS_REC A where EFFDT = (select MAX(EFFDT)
from PS_REC
where PS_REC.FNUM = A.FNUM
and PS_REC.EFFDT <= %DateIn('1998-01-02') )"
El siguiente ejemplo usa ID de correlacin:
SELECT A.DEPTID
FROM %Table(DEPT_TBL) A
WHERE
%EffDtCheck(DEPT_TBL B, A, %CurrentDateIn)
AND A.EFF_STATUS = 'A'
Este cdigo de ejemplo se resuelve en el siguiente:
SELECT A.DEPTID
FROM %Table(DEPT_TBL) A
WHERE
A.EFFDT =
(SELECT MAX(B.EFFDT)
FROM DEPT_TBL B
WHERE
A.SETID = B.SETID
AND A.DEPTID = B.DEPTID
AND B.EFFDT <=%CurrentDateIn)
AND A.EFF_STATUS = 'A'
%InsertSelect
Syntax
%InsertSelect([DISTINCT, ]insert_recname, select_recname [
correlation_id][, select_recname_n [ correlation_id_n]] [,
override_field = value]. . .)

Descripcin
La construccin% InsertSelect meta-SQL genera una instruccin Insert con una instruccin Select.
No genera una declaracin From. Debe especificar los registros de seleccin antes de especificar
campos de anulacin.

Note. %InsertSelect tiene un lmite de 99 campos de anulacin.

La lista Insertar columna se compone de todos los campos en el insert_recname especificado, con
la excepcin de los campos LongChar o Image.

Note. Debido a la forma en que se manejan los valores largos (campos LongChar e Imagen) en las
diversas plataformas de bases de datos para las instrucciones Insert, todos los valores largos en
insert_recname se omiten en la instruccin Insert insertada. Esto implica que estos campos se
deben definir de tal manera que permitan valores nulos.

El valor correspondiente en la lista Seleccionar se genera en base a la siguiente precedencia:


1. Si el campo Insertar nombre de campo aparece como override_field, el valor
correspondiente se utiliza en la lista de seleccin.
2. Si el nombre del campo Insertar coincide con un nombre de campo en una de las variables
de nombre de seleccin de seleccin especificadas, se utiliza el campo Seleccionar
correspondiente en la lista Seleccionar.
3. El orden de bsqueda de los registros select_recname es el orden en que se especifican
en la funcin %InsertSelect.
4. Si el nombre del campo Insertar tiene un valor predeterminado constante definido en
PeopleSoft Application Designer, ese valor se utiliza en la lista Selecciona.
5. Se utiliza un valor predeterminado apropiado para el tipo de datos del campo Insertar (en
blanco para los caracteres, cero para los nmeros, NULO para los valores de Fecha, Hora
y Fecha y hora, y as sucesivamente).
Use la variable opcional override_field para especificar valores para un campo particular.

Note. No puede usar variables de vinculacin con override_field.

Para cada campo que especifique, la lgica de coincidencia descrita en la lista anterior no se
realiza. En cambio, el valor que especifique despus del signo igual se utiliza para ese campo en la
lista de seleccin real. Utilice esta tcnica para permitir que PeopleTools o PeopleSoft Application
Engine manejen la mayora de los campos en el registro, al tiempo que especifica algunos de ellos
explcitamente. Adems, puede usar override_field para especificar funciones agregadas como
Sum, Max, etc.
Note. Este meta-SQL no est implementado para COBOL.

Parametros

DISTINCT Especifique si la instruccin Select que se genera debe contener una clusula
Distinct.
insert_recname Especifique el nombre del registro que se va a insertar. Debe especificar un
nombre de registro, no RECORD. recname, un nombre de registro entre comillas,
una variable de enlace o un nombre de tabla.

Note. Si el registro para insert_recname es una tabla temporal,% InsertSelect


sustituye automticamente la instancia de tabla correspondiente (PS_TARGETnn
en lugar de PS_TARGET).

select_recname Especifique el nombre del registro seleccionado. Puede especificar ms de un


registro. Debe especificar un nombre de registro, no un REGISTRO. recname, un
nombre de registro entre comillas o un nombre de tabla.
correlation_id Identifique el ID de correlacin que se utilizar para los registros y campos
select_recname.
override_field Especifique el nombre de un campo en insert_recname para el que desea
proporcionar un valor (en lugar de usar el valor proporcionado desde
select_recname.)
Value Especifique el valor que se debe usar para override_field en lugar del valor de
select_recname.

Ejemplo
Aqu hay un ejemplo bsico:
%InsertSelect(AE_SECTION_TBL, AE_STEP_TBL S, AE_SECTION_TYPE = '
')
FROM PS_AE_STEP_TBL S, PS_AS_STMT_TBL T
WHERE. . .
El cdigo de ejemplo se resuelve en el siguiente:
INSERT INTO PS_AE_SECTION_TBL (AE_APPLID, AE_SECTION,. . .,
AE_SECTION_TYPE)
SELECT S.AE_APPL_ID, S.AE_SECTION, . . . ' '
FROM PS_AE_STEP_TBL S, PS_AS_STMT_TBL T
WHERE. . .
En el siguiente ejemplo, tiene una tabla temporal, PS_MY_TEMP, que se basa en una combinacin
entre otras dos tablas, PS_MY_TABLE1 y PS_MY_TABLE2:
%InsertSelect(MY_TEMP, MY_TABLE1, MY_TABLE2 T2)
FROM PS_MY_TABLE1 T1, PS_MY_TABLE2 T2
WHERE %Join(COMMON_KEYS, MY_TABLE1 T1, MY_TABLE2 T2) . . .
Este cdigo se resuelve en:
INSERT INTO PS_MY_TEMP (FIELD1, FIELD2 . . .)
SELECT T2.FIELD1, T2.FIELD2, . . .
FROM PS_MY_TABLE1 T1, PS_MYTABLE2 T2
WHERE T1.FIELD1 = T2.FIELD1
AND T1.FIELD2 = T2.FIELD2 . . .
El siguiente ejemplo crea una declaracin Select distinta.
%InsertSelect(DISTINCT, MY_TABLE, TABLE1, TABLE2 T2)
FROM PS_TABLE1 T1, PS_TABLE2 T2
WHERE %Join(COMMON_KEYS, TABLE1 T1, TABLE2 T2) . . .
Este cdigo se resuelve en:
INSERT INTO PS_MYTABLE (FIELD1, FIELD2 . . .)
SELECT DISTINCT T2.FIELD1, T2.FIELD2, . . .
FROM PS_TABLE1 T1, PS_TABLE2 T2
WHERE T1.FIELD1 = T2.FIELD1
AND T1.FIELD2 = T2.FIELD2 . . .
%InsertValues
Syntax
%InsertValues(recname)

Description
El constructo meta-SQL %InsertValues produce una lista separada por comas de los valores de
campo no nulos del registro. El procesamiento de entrada se aplica a los campos de las siguientes
maneras:
Si el campo es una fecha, una hora o un tipo de datos DateTime, su valor se ajusta
automticamente en %Datein, %TimeIn o %DateTimeIn, respectivamente.
Si el campo es una cadena, su valor se envuelve automticamente entre comillas.
Si el campo tiene un valor nulo, no est incluido en la lista.

Note. Esta construccin meta-SQL solo se puede usar en programas PeopleCode, no en acciones
SQL de Application Engine. Adems, esta construccin meta-SQL no est implementada para
COBOL.

Parametros

recname Especifique el nombre del registro que se utilizar para insertar. Esto puede ser una
variable de vinculacin, un objeto de registro o un nombre de registro en la forma
recname. No puede especificar un RECORD.recname, un nombre de registro entre
comillas o un nombre de tabla.

Example
Aqu hay un ejemplo:
SQLExec("Insert into TABLE (%List(NonNull_Fields, :1)) values
(%InsertValues(:1))", &Rec);
This example code is expanded into:
"Insert into TABLE (FNUM, FCHAR, FDATE) values (27, 'Y',
%datein('1989-11-27'))"
%NumToChar
Syntax
%NumToChar(Number)

Descripcion
Use la construccin% NumToChar para transformar un valor numrico en un valor de carcter. Los
espacios se recortan de Nmero.

Parametros

Number Especifique el nmero para convertir a un valor de carcter. Los nmeros firmados, as
como los decimales, son aceptables.

%DateDiff
Syntax
%DateDiff(date_from, date_to)

Description
La funcin meta-SQL DateDiff devuelve un nmero entero que representa la diferencia entre dos
fechas en nmero de das.

Example
%DateDiff(%DateIn('1997-01-01'), %DateIn("1966-06-30'))

%DateDiff( date1_column, date2_column)

%DateDiff ( %DateAdd(date1_column, 30), date2_column)


El siguiente uso es ilegal (siempre use %Datein para ingresar literales de fecha):
%DateDiff('1997-01-01', '1996-06-30') (should use %DateIn for
inputting date literals)

También podría gustarte