Hola Fernando:
He estado buscando, pero no encuentro el artículo original en que se
explicaba.
Se publicó hace poco en iSeries News (en inglés) y el autor era D. Cruik,
de IBM.
En esencia yo creía, como supongo que la mayoría de vosotros, que aparte de
distinguirlos mediante un atributo, en los objetos resultantes no había
diferencia entre los ficheros físicos creados desde SQL (CREATE TABLE) o
desde DDS (CRTPF).
D. Cruik explicaba que son tipos de objeto diferentes y que se procesan de
manera diferente.
La diferencia fundamental está en la comprobación de validez de los datos,
en los DDS se comprueba al leer y en los SQL se comprueba al escribir.
Como, normalmente, un registro se lee muchas más veces que se escribe, los
creados con SQL resultan más rápidos.
Esto se nota sobre todo en los tratamientos SQL, en los que se leen muchos
registros para tratamiento agrupado.
A pesar de la evidencia yo no lo acababa de creer e hice la prueba de
Cruik:
Creas un fichero, de un solo campo numérico, con DDS y con SQL.
Creas un fichero sin DDS ni SQL, longitud fija y le introduces un par de
registros con letras.
Haces CPYF al fichero creado con DDS y no da error.
haces CPYF al fichero creado con SQL y da un error de validez de datos.
Si luego lees, mediante programa o SELECT de SQL interactivo, el fichero
DDS, da error de datos incorrectos.
Saludos,
---------------------------
Santiago Martí
Dusen, S.A.
---------------------------
Fernando Pérez
<[EMAIL PROTECTED]
m> Para
Enviado por: [email protected]
forum.help400-adm cc
[EMAIL PROTECTED]
Asunto
Re: Campo autoincremental, o DDS
16/01/2006 16:33 versus SQL.
Por favor,
responda a
[EMAIL PROTECTED]
bios.es
Caramba, Santiago, no sabía lo del rendimiento. ¿Me podrías dar datos al
respecto, por favor?
Saludos.
Fernando Pérez
Cerámica Saloni. Dpto. Sistemas
Santiago G Martí escribió:
Nosotros estamos cambiando poco a poco.
Los ficheros físicos los creamos con SQL, porque tienen mucho mejor
rendimiento que los creados con DDS.
Sobre estas tablas creamos Ficheros Lógicos con DDS, para poder
utilizarlos
con las sentencias tradicionales de RPG CHAIN, READ etc.
En los programas sólo utilizamos LF.
Saludos,
---------------------------
Santiago Martí
Dusen, S.A.
---------------------------
Vicente García
<[EMAIL PROTECTED]
om>
Para
Enviado por: [email protected]
forum.help400-adm
cc
[EMAIL PROTECTED]
Asunto
Re: Campo autoincremental
13/01/2006 09:18
Por favor,
responda a
[EMAIL PROTECTED]
bios.es
En cuanto a que no te gusta tener ficheros sin DDS, ¿es por que te
gusta
tener los fuentes de los ficheros de datos? Si es por eso con SQL
sigues
teniendo los fuentes tanto de la tabla en si como de índices, vistas,
restricciones,... y la potencia que te da el SQL no tiene comparación
a
las DDS.
Desde estos fuentes SQL con RUNSQLSTM creas las tablas, índices,
vistas,... igual que ahora haces con CRTPF o CTRLF (opción 14 de
PDM).
Incluso es posible desde los ficheros que tienes ahora (incluso sin
tener el fuente DDS) generar las sentencias DDL de SQL que les
corresponden, mediante iSeries Navigator o mediante el API QSQGNDDL.
Y de todas maneras se pueden tener conviviendo juntas tablas creadas
desde DDS e ir creando las nuevas desde SQL.
Saludos
Vicente García Valero
Departamento Sistemas
Cerámica SALONI, S.A.
Jordi Parera wrote:
Hola Foro,
Estoy intentado crear un fichero con un campo autoincremental
vía DDS,
creo que es imposible, me lo podrían confirmar.
Mediante SQL ningún problema, aunque no me gusta excesivamente
tener
ficheros sin DDS.
Me he encontrado con una situación como mínimo sorprendente, si
creo un
fichero vía SQL y posteriormente intento añadir un campo
autoincremental
con una sentencia de este estilo:
ALTER TABLE Fichero ADD COLUMN campo INT
GENERATED ALWAYS AS IDENTITY
(START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO
CYCLE NO ORDER CACHE 20)
, me lo crea sin ningún problema. Pero si intento hacer lo
mismo contra
un fichero creado con DDS, sin ningún campo clave me da el
siguiente
error:
Mensaje . . . . : Sólo se permite una columna ROWID o IDENTITY
para la
tabla
Fichero de Biblioteca.
Causa . . . . . : La columna "campo" no puede crearse en la
tabla
"Fichero"
de "Biblioteca" ya que la columna *N ya se ha definido. Puede
haber como
máximo una
columna IDENTITY y una columna ROWID que estén definidas en una
tabla.
Recuperación . : Elimine una de las columnas o bien cambie los
atributos
de
modo que sólo una columna esté definida como ROWID o como una
columna
IDENTITY. Intente de nuevo la petición.
Alguien me podría decir porque o si estoy haciendo algo
incorrectamente,
muchas gracias a todos por vuestra ayuda.
__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________
Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400
__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________
Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400
(See attached file: fperez.vcf)
fperez.vcf
Description: Binary data
