Foros del Web » Programando para Internet » PHP »

FAQ de Base de Datos

Estas en el tema de FAQ de Base de Datos en el foro de PHP en Foros del Web. continua... Código: INSERT INTO pais(id_pais,nombre_pais) VALUES('','Republic of Congo'); INSERT INTO pais(id_pais,nombre_pais) VALUES('','Costa Rica'); INSERT INTO pais(id_pais,nombre_pais) VALUES('','Croatia'); INSERT INTO pais(id_pais,nombre_pais) VALUES('','Czech Republic'); INSERT INTO pais(id_pais,nombre_pais) ...

  #61 (permalink)  
Antiguo 27/10/2005, 05:34
Avatar de elangelcaido  
Fecha de Ingreso: septiembre-2003
Ubicación: Oviedo
Mensajes: 1.068
Antigüedad: 21 años, 2 meses
Puntos: 4
continua...
Código:
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Republic of Congo');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Costa Rica');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Croatia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Czech Republic');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Djibouti');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Dominica');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Dominican Republic');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','East Timor');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Eastern Caribbean States');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Ecuador');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Egypt');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','El Salvador');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Equatorial Guinea');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Eritrea');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Estonia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Ethiopia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Fiji');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Gabon');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','The Gambia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Georgia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Ghana');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Grenada');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Grenadine');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Guatemala');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Guinea');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Guinea-Bissau');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Guyana');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Haiti');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Honduras');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Hungary');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','India');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Indonesia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Iran, Islamic Republic');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Jamaica');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Japan');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Jordan');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Kazakhstan');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Kenya');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Kiribati');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Korea');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Kuwait');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Kyrgyz Republic');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Lao PDR');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Latvia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Lebanon');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Lesotho');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Liberia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Lithuania');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','FYR of Macedonia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Madagascar');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Malawi');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Malaysia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Maldives');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Mali');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Marshall Islands');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Mauritania');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Mauritius');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Mexico');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','FS Micronesia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Moldova');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Mongolia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Morocco');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Mozambique');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Myanmar');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Namibia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Nepal');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Nicaragua');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Niger');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Nigeria');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Oman');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Pakistan');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Palau');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Panama');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Papua New Guinea');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Paraguay');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Peru');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Philippines');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Poland');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Qatar');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Romania');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Russian Federation');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Rwanda');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Samoa');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','São Tomé & Príncipe');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Saudi Arabia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Senegal');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Seychelles');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Sierra Leone');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Slovak Republic');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Slovenia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Solomon Islands');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Somalia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','South Africa');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Spain');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Sri Lanka');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','St. Kitts and Nevis');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','St. Lucia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','St. Vincent');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Suriname');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Swaziland');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Syrian Arab Republic');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Tajikistan');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Tanzania');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Thailand');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Togo');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Tonga');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Trinidad and Tobago');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Tunisia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Turkey');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Turkmenistan');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Uganda');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Ukraine');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','United Arab Emirates');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Uruguay');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Uzbekistan');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Vanuatu');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Venezuela');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Vietnam');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','West Bank and Gaza');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Yemen');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Yugoslavia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Zambia');
INSERT INTO pais(id_pais,nombre_pais) VALUES('','Zimbabwe');
__________________
Ta Luego! Al final sólo puede quedar uno...
________
lukos.org
  #62 (permalink)  
Antiguo 09/01/2006, 23:21
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 11 meses
Puntos: 11
Es una pena enterarme como novato del tema, que no hay ni un solo Faq de access, ( la respuesta obvia que vendra sera... es q access es muy basico, no sirve para nada, es lento, con errores, etc) pero bueno, para gente beginner basta y sobra, lastima que no pueda aprender nada al respecto sobre Acces en una seccion de bases de datos..
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #63 (permalink)  
Antiguo 19/01/2006, 14:35
 
Fecha de Ingreso: diciembre-2005
Ubicación: Venezuela
Mensajes: 19
Antigüedad: 18 años, 11 meses
Puntos: 1
Hola a todos como seria la sentencia sql para un loader.
Y que esta contenido en el archivo de control. Osea que controlo con ese archivo.
gracias de antemano.
  #64 (permalink)  
Antiguo 01/02/2006, 14:35
Avatar de mauriciolangea  
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 10 meses
Puntos: 0
Interbase

Tema : Interbase / Firebird

Pregunta : ¿Porqué cuando elimino registros mi base de dato, esta no se reduce de tamaño?

Respuesta :

Interbase/Firebird no libera espacio, sin embargo, cuando se eliminan registros los marca como eliminados y luego el espacio marcado como eliminado es reutilizado cuando se insertan nuevos registros o se actualicen registro existentes. Para reducir el espacio físico de tu base de datos debes realizar un respaldo y luego una restaurar ese respaldo.
  #65 (permalink)  
Antiguo 01/02/2006, 14:39
Avatar de mauriciolangea  
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 10 meses
Puntos: 0
Interbase

Tema : Interbase / Firebird

Pregunta : ¿Cuantos usuario concurrentes soporta Interbase / Firebird?

Respuesta :

Interbase/Firebird soportara hasta 1024 usuarios concurrentes

Última edición por mauriciolangea; 30/04/2006 a las 10:04
  #66 (permalink)  
Antiguo 01/02/2006, 14:42
Avatar de mauriciolangea  
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 10 meses
Puntos: 0
Interbase

Tema : Interbase / Firebird

Pregunta : ¿Qúe son los Roles?

Respuesta

Los Roles son parte del sistema de seguridad de Firebird/InterBase. Permiten que se manejen de manera más fácil los permisos, ya que podemos crear roles y asignarles los permisos a éstos (y también revocárselos).

Posteriormente se puede asignar un rol a uno o más usuarios.
De esta manera ya no repetimos la asignación de permisos por cada tabla a cada usuario, facilitando la asignación de permisos y creando una especie de "tipos de usuarios".
Esto es muy útil cuando las bases de datos tienen muchas tablas, procedimientos y vistas.

Por ejemplo, supongamos que tenemos un rol SUPER_USUARIO definido con TODOS los privilegios sobre la tabla PRUEBA.

SQL> create table prueba (i1 integer);

SQL> create role SUPER_USUARIO;

SQL> grant all on prueba to SUPER_USUARIO;

SQL> show grant prueba;
GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES
ON PRUEBA TO SUPER_USUARIO

A los usuarios USUARIO1 y USUARIO2 le consederemos que asuman los privilegios del rol SUPER_USUARIO.

SQL> grant SUPER_USUARIO to USUARIO1;
SQL> grant SUPER_USUARIO to USUARIO2;

Ahora los usuarios USUARIO1 y USUARIO2 tienen todos los privilegios para la tabla PRUEBA, cuando ellos se conecten asumiendo el rol SUPER_USUARIO. Si los usuarios USUARIO1 y USUARIO2 intentan conectarse sin asumir el rol SUPER_USUARIO, entonces, no tendrán privilegio alguno sobre la tabla PRUEBA.


Ejemplo 1.- Conexión sin asumir el rol SUPER_USUARIO.

SQL> connect basededato.gdb user usuario1 password usuario1;
Database: basededato.gdb, User: usuario1

SQL> select * from prueba;
Statement failed, SQLCODE=-551
no permission for read/select access to table PRUEBA


Ejemplo 2.- Conexión asumiendo el rol SUPER_USUARIO.

SQL> connect basededato.gdb user usuario1 password usuario1 role super_usuario;
Database: basededato.gdb, User: usuario1

SQL> select * from prueba;
  #67 (permalink)  
Antiguo 02/02/2006, 10:47
Avatar de mauriciolangea  
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 10 meses
Puntos: 0
Interbase

Tema : Interbase / Firebird

Pregunta : ¿Como permito que los usuarios puedan modificar su propia contraseña?

Respuesta

La forma más fácil es hacer un GRANT UPDATE ON USERS TO PUBLIC, y agregar un TRIGGER que prevenga que los usuarios, con excepción de SYSDBA de modificar la contraseña de alguién más

Este es el script :

/*
Base de datos de seguridad (isc4.gdb) - version A
-permite a los usuario cambiar su propia contraseña,
-permite a SYSDBA agregar, cambiar, borrar cualquier usuario/contraseña.

Escrito por: Ivan Prenosil, 2001
*/



CONNECT 'C:\Archivos de programa\Borland\InterBase\isc4.gdb'
USER 'SYSDBA'
PASSWORD 'masterkey';


CREATE EXCEPTION E_NO_RIGHT
'No tiene provilegios para modificar éste usuario.';

SET TERM !!;
CREATE TRIGGER user_name_bu
FOR USERS
BEFORE UPDATE
AS
BEGIN
IF (NOT (USER='SYSDBA' OR USER=OLD.USER_NAME))
THEN EXCEPTION E_NO_RIGHT;
END !!
SET TERM ;!!


/** Grants. **/


GRANT UPDATE(PASSWD, GROUP_NAME, UID, GID, FIRST_NAME, MIDDLE_NAME, LAST_NAME)
ON USERS
TO PUBLIC;

Importante

El problema de éste procedimiento es que los usuarios con sus contraseñas quedan visibles, por lo que si alguien malintencionado podría intentar descriptar las contraseñas a fuerza bruta.
  #68 (permalink)  
Antiguo 04/04/2006, 10:22
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años, 7 meses
Puntos: 3
Tema : Oracle

Pregunta : ¿Como puedo migrar data de tipo BLOB?

Respuesta : Una vez me ocurrio esto, migrando de una BD a otra, las inserciones lo haciamos con un insert select, pero en el caso de los BLOB no es posible.
Simplemente se crea un procedure y se declara una variable con el atributo del campo que tiene el tipo de dato BLOB, se crea un cursor para recorrer todos los campos y se almacena el tipo BLOB en la variable declarada.
Luego se hace el insert con la variable que tiene el BLOB almacenado. He aqui un ejemplo:
set serveroutput on

declare


parcodfac foto_cliente.codfac%type;
parcodesc foto_cliente.codesc%type;
parcodcli foto_cliente.codcli%type;
parfotcli foto_cliente.fotcli%type;
parurlcli foto_cliente.urlcli%type;
parusucre foto_cliente.ideusucre%type;
parfeccre foto_cliente.fechorusucre%type;
parusumod foto_cliente.ideusumod%type;
parfecmod foto_cliente.fechorusumod%type;
parcoderr NUMBER;
parmsgerr VARCHAR2(100);
nCont NUMBER;

cursor cl_foto is
SELECT codfac,codesc,codcli,fotcli,urlcli,ideusucre,fecho rusucre,ideusumod,fechorusumod
FROM foto_cliente;

BEGIN

nCont:=0;
for c_cl_foto IN cl_foto loop
parcodfac:=c_cl_foto.codfac;
parcodesc:=c_cl_foto.codesc;
parcodcli:=c_cl_foto.codcli;
parfotcli:=c_cl_foto.fotcli;
parurlcli:=c_cl_foto.urlcli;
parusucre:=c_cl_foto.ideusucre;
parfeccre:=c_cl_foto.fechorusucre;
parusumod:=c_cl_foto.ideusumod;
parfecmod:=c_cl_foto.fechorusumod;

insert into foto_cliente@ciencias
(codfac,codesc,codcli,fotcli,urlcli,ideusucre,fech orusucre,ideusumod,fechorusumod)
values
(parcodfac,parcodesc,parcodcli,parfotcli,parurlcli ,parusucre,parfeccre,parusumod,parfecmod);

nCont:=nCont+1;
end loop;

dbms_output.put_line('Son : '||to_char(nCont));

exception
when others then
parcoderr:=sqlcode;
parmsgerr:=sqlerrm;
rollback;
end;

En este caso creamos un dblink para poder acceder a la base de datos origen y desde esa conexión insertar a la base de datos destino.
Es la forma que use.....
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #69 (permalink)  
Antiguo 03/05/2006, 20:46
Avatar de mauriciolangea  
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 10 meses
Puntos: 0
Firebird

Tema : Firebird

Pregunta : ¿Como instalo en Linux sólo el cliente de Firebird?

Respuesta

Linux y otros clientes Posix

De momento no hay ningún programa de instalación para sólo instalar el cliente de Firebird. Esto es porqué algunos Posix, incluyendo Linux, tienen algunos de requerimientos para los lugares de los sistemas de archivos. Por ésta razón, no existe una versión en *x para una opción de instalación solo para cliente de Firebird.

Sin embargo en la mayoría de las distintas distribuciones de Linux, el siguiente procedimiento sirve para sólo instalar el cliente Firebird. Conéctate como root.
  1. Busca el archivo libfbclient.so.1.m.n (m.n sería la versión) en /opt/firebird/lib en el servidor en donde el servidor de Firebird está instalado. Copialo en /usr/lib en la máquina cliente.
  2. Crea los enlaces simbólicos usando los siquientes comandos:
    ln -s /usr/lib/libfbclient.so.1.m.n /usr/lib/libfbclient.so.1
    ln -s /usr/lib/libfbclient.so.1 /usr/lib/libfbclient.so
    Reemplazando 1.m.n con tu versión , ejemplo: 1.5.0 ó 1.6.1

    Si corres aplicaciones que esperan que las librerías legacy estén presentes, también crea los siguientes enlaces:
    ln -s /usr/lib/libfbclient.so /usr/lib/libgds.so.0
    ln -s /usr/lib/libfbclient.so /usr/lib/libgds.so
  3. Copia el archivo firebird.msg en /opt/firebird
  4. En el perfil del shell por defecto, o usando setenv() desde la consola, crea las variables de entorno de FIREBIRD y apuntalo a /opt/firebird, para permitir que las rutinas de la aplicaciones puedan localizar los mensajes.
  #70 (permalink)  
Antiguo 25/05/2006, 11:49
Avatar de VaIvan  
Fecha de Ingreso: octubre-2005
Ubicación: Mexico
Mensajes: 138
Antigüedad: 19 años, 1 mes
Puntos: 2
Información Tips administrar bd en ORACLE

les adjunto algunas pequeñas instrucciones para administrar las bases de datos espero les sirva:

Algunas consultas SQL muy útiles para el administrador de Oracle (estado de la base de datos Oracle, parámetros generales, ficheros de control, conexiones actuales a Oracle, nombre del ejecutable que se utiliza, nombre del usuario, diccionario de datos (vistas y tablas)...

Vista que muestra el estado de la base de datos:
select * from v$instance

Consulta que muestra si la base de datos está abierta
select status from v$instance

Vista que muestra los parámetros generales de Oracle
select * from v$system_parameter

Versión de Oracle
select value from v$system_parameter where name = 'compatible'

Ubicación y nombre del fichero spfile
select value from v$system_parameter where name = 'spfile'

Ubicación y número de ficheros de control
select value from v$system_parameter where name = 'control_files'

Nombre de la base de datos
select value from v$system_parameter where name = 'db_name'

Vista que muestra las conexiones actuales a Oracle Para visualizarla es necesario entrar con privilegios de administrador
select osuser, username, machine, program
from v$session
order by osuser

Vista que muestra los programas conectados a Oracle y el número de sesiones por programa
select program, count(program) "Número"
from v$session
group by program
order by "Número" desc

Propietarios de objetos y número de objetos por propietario
select owner, count(owner) Numero
from dba_objects
group by owner
order by Numero desc

Diccionario de datos (incluye todas las vistas y tablas de la Base de Datos)
select * from dictionary


select table_name from dictionary

Muestra los datos de una tabla especificada (en este caso todas las tablas que lleven la cadena "EMPLO"
select * from ALL_ALL_TABLES where upper(table_name) like '%EMPLO%'

Tablas propiedad del usuario actual
select * from user_tables

Todos los objetos propiedad del usuario conectado a Oracle
select * from user_catalog

Consulta SQL para el DBA de Oracle que muestra los tablespaces, el espacio utilizado, el espacio libre y los ficheros de datos de los mismos:
Select t.tablespace_name "Tablespace", t.status "Estado",
ROUND(MAX(d.bytes)/1024/1024,2) "MB Tamaño",
ROUND((MAX(d.bytes)/1024/1024) -
(SUM(decode(f.bytes, NULL,0, f.bytes))/1024/1024),2) "MB Usados",
ROUND(SUM(decode(f.bytes, NULL,0, f.bytes))/1024/1024,2) "MB Libres",
t.pct_increase "% incremento",
SUBSTR(d.file_name,1,80) "Fichero de datos"
FROM DBA_FREE_SPACE f, DBA_DATA_FILES d, DBA_TABLESPACES t
WHERE t.tablespace_name = d.tablespace_name AND
f.tablespace_name(+) = d.tablespace_name
AND f.file_id(+) = d.file_id GROUP BY t.tablespace_name,
d.file_name, t.pct_increase, t.status ORDER BY 1,3 DESC

Productos Oracle instalados y la versión:
select * from product_component_version

Roles y privilegios por roles:
select * from role_sys_privs

Reglas de integridad y columna a la que afectan:
select constraint_name, column_name from sys.all_cons_columns

Tablas de las que es propietario un usuario, en este caso "HR":
SELECT table_owner, table_name from sys.all_synonyms where table_owner like 'HR'

Otra forma más efectiva (tablas de las que es propietario un usuario):
SELECT DISTINCT TABLE_NAME
FROM ALL_ALL_TABLES
WHERE OWNER LIKE 'HR'

Parámetros de Oracle, valor actual y su descripción:
SELECT v.name, v.value value, decode(ISSYS_MODIFIABLE, 'DEFERRED',
'TRUE', 'FALSE') ISSYS_MODIFIABLE, decode(v.isDefault, 'TRUE', 'YES',
'FALSE', 'NO') "DEFAULT", DECODE(ISSES_MODIFIABLE, 'IMMEDIATE',
'YES','FALSE', 'NO', 'DEFERRED', 'NO', 'YES') SES_MODIFIABLE,
DECODE(ISSYS_MODIFIABLE, 'IMMEDIATE', 'YES', 'FALSE', 'NO',
'DEFERRED', 'YES','YES') SYS_MODIFIABLE , v.description
FROM V$PARAMETER v
WHERE name not like 'nls%' ORDER BY 1

Usuarios de Oracle y todos sus datos (fecha de creación, estado, id, nombre, tablespace temporal,...):
Select * FROM dba_users

Tablespaces y propietarios de los mismos:
select owner, decode(partition_name, null, segment_name,
segment_name || ':' || partition_name) name,
segment_type, tablespace_name,bytes,initial_extent,
next_extent, PCT_INCREASE, extents, max_extents
from dba_segments
Where 1=1 And extents > 1 order by 9 desc, 3

Últimas consultas SQL ejecutadas en Oracle y usuario que las ejecutó:
select distinct vs.sql_text, vs.sharable_mem,
vs.persistent_mem, vs.runtime_mem, vs.sorts,
vs.executions, vs.parse_calls, vs.module,
vs.buffer_gets, vs.disk_reads, vs.version_count,
vs.users_opening, vs.loads,
to_char(to_date(vs.first_load_time,
'YYYY-MM-DD/HH24:MI:SS'),'MM/DD HH24:MI:SS') first_load_time,
rawtohex(vs.address) address, vs.hash_value hash_value ,
rows_processed , vs.command_type, vs.parsing_user_id ,
OPTIMIZER_MODE , au.USERNAME parseuser
from v$sqlarea vs , all_users au
where (parsing_user_id != 0) AND
(au.user_id(+)=vs.parsing_user_id)
and (executions >= 1) order by buffer_gets/executions desc

Todos los ficheros de datos y su ubicación:
select * from V$DATAFILE

Ficheros temporales:
select * from V$TEMPFILE

Tablespaces:
select * from V$TABLESPACE

Otras vistas muy interesantes:
select * from V$BACKUP

select * from V$ARCHIVE

select * from V$LOG

select * from V$LOGFILE

select * from V$LOGHIST

select * from V$ARCHIVED_LOG

select * from V$DATABASE

Memoria Share_Pool libre y usada
select name,to_number(value) bytes
from v$parameter where name ='shared_pool_size'
union all
select name,bytes
from v$sgastat where pool = 'shared pool' and name = 'free memory'

Cursores abiertos por usuario
select b.sid, a.username, b.value Cursores_Abiertos
from v$session a,
v$sesstat b,
v$statname c
where c.name in ('opened cursors current')
and b.statistic# = c.statistic#
and a.sid = b.sid
and a.username is not null
and b.value >0
order by 3

Aciertos de la caché (no debe superar el 1 por ciento)
select sum(pins) Ejecuciones, sum(reloads) Fallos_cache,
trunc(sum(reloads)/sum(pins)*100,2) Porcentaje_aciertos
from v$librarycache
where namespace in ('TABLE/PROCEDURE','SQL AREA','BODY','TRIGGER');

Sentencias SQL completas ejecutadas con un texto determinado en el SQL
SELECT c.sid, d.piece, c.serial#, c.username, d.sql_text
FROM v$session c, v$sqltext d
WHERE c.sql_hash_value = d.hash_value
and upper(d.sql_text) like '%WHERE CAMPO LIKE%'
ORDER BY c.sid, d.piece

Una sentencia SQL concreta (filtrado por sid)
SELECT c.sid, d.piece, c.serial#, c.username, d.sql_text
FROM v$session c, v$sqltext d
WHERE c.sql_hash_value = d.hash_value
and sid = 105
ORDER BY c.sid, d.piece

//Tamaño ocupado por la base de datos
select sum(BYTES)/1024/1024 MB from DBA_EXTENTS

//Tamaño de los ficheros de datos de la base de datos
select sum(bytes)/1024/1024 MB from dba_data_files

//Tamaño ocupado por una tabla concreta sin incluir los índices de la misma
select sum(bytes)/1024/1024 MB from user_segments
where segment_type='TABLE' and segment_name='NOMBRETABLA'

//Tamaño ocupado por una tabla concreta incluyendo los índices de la misma
select sum(bytes)/1024/1024 Table_Allocation_MB from user_segments
where segment_type in ('TABLE','INDEX') and
(segment_name='NOMBRETABLA' or segment_name in
(select index_name from user_indexes where table_name='NOMBRETABLA'))

//Tamaño ocupado por una columna de una tabla
select sum(vsize('NOMBRECOLUMNA'))/1024/1024 MB from NOMBRETABLA

//Espacio ocupado por usuario
SELECT owner, SUM(BYTES)/1024/1024 FROM DBA_EXTENTS MB
group by owner

//Espacio ocupado por los diferentes segmentos (tablas, índices, undo, rollback, cluster, ...)
SELECT SEGMENT_TYPE, SUM(BYTES)/1024/1024 FROM DBA_EXTENTS MB
group by SEGMENT_TYPE

//Espacio ocupado por todos los objetos de la base de datos, muestra los objetos que más ocupan primero
SELECT SEGMENT_NAME, SUM(BYTES)/1024/1024 FROM DBA_EXTENTS MB
group by SEGMENT_NAME
order by 2 desc
  #71 (permalink)  
Antiguo 24/07/2006, 08:31
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años, 6 meses
Puntos: 2
Tema : MSSQL Server

Pregunta : ¿Cómo inserto los registros de una tabla al final de otra?
Respuesta:

http://www.forosdelweb.com/showthrea...=1#post1635032

saludos
  #72 (permalink)  
Antiguo 12/10/2006, 06:22
 
Fecha de Ingreso: enero-2004
Mensajes: 310
Antigüedad: 20 años, 10 meses
Puntos: 0
Tema: SQL Server 2005 SQLEXPRESS

Pregunta: No me puedo conectar a SQL Server 2005 EXPRESS

Respuesta:
http://www.mistrucos.net/truco-sql-s...gado-691_1.htm
__________________
Un saludo,
Trucos
Videos
  #73 (permalink)  
Antiguo 12/10/2006, 06:24
 
Fecha de Ingreso: enero-2004
Mensajes: 310
Antigüedad: 20 años, 10 meses
Puntos: 0
Visualizar el tamaño de una base de datos

Tema: SQL Server 2000

Pregunta: ¿Cómo puedo ver el peso de las tablas?

Respuesta:
http://www.mistrucos.net/truco-sql-s...atos-687_1.htm
__________________
Un saludo,
Trucos
Videos
  #74 (permalink)  
Antiguo 21/10/2006, 01:44
 
Fecha de Ingreso: enero-2004
Mensajes: 310
Antigüedad: 20 años, 10 meses
Puntos: 0
Tema: SQL SERVER 2005 EXPRESS

Pregunta: ¿Cómo puedo crear una cadena de conexión?

Respuesta:
http://www.mistrucos.net/truco-sql-s...xion-692_1.htm
__________________
Un saludo,
Trucos
Videos
  #75 (permalink)  
Antiguo 21/10/2006, 01:45
 
Fecha de Ingreso: enero-2004
Mensajes: 310
Antigüedad: 20 años, 10 meses
Puntos: 0
Tema: SQL SERVER 2005 EXPRESS

Pregunta: ¿Cómo puedo hacer un backup si me da error con text index?

Respuesta:
http://www.mistrucos.net/truco-sql-s...atos-693_1.htm
__________________
Un saludo,
Trucos
Videos
  #76 (permalink)  
Antiguo 22/06/2007, 13:45
Avatar de mauriciolangea  
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: FAQ de Base de Datos

Tema : Interbase / Firebird

Pregunta : ¿Creando campos lógicos Booleanos en Interbase / Firebird?

Problema :

InterBase / Firebird no tiene campos de tipo Booleano.


Respuesta :

Opción 1:
---------
Crea un campo de tipo CHAR y usa CHECK CONSTRAINTS para limitar los valores permitidos en el campo.

Ejemplo:

CHAR(1) CHECK (VALUE IN ("Y", "N")) NOT NULL;

Opción 2:
---------
Parecida a la anterior, pero usando un campo de tipo global para la base de datos, para poder reutilizar el tipo de dato más fácilmente.

Ejemplo:

CREATE DOMAIN YN AS CHAR(1) CHECK (VALUE IN ("Y","N")) NOT NULL;
  #77 (permalink)  
Antiguo 03/07/2007, 10:03
Avatar de mauriciolangea  
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: FAQ de Base de Datos

Tema : Interbase / Firebird

Pregunta : ¿Para que sirve el archivo aliases.conf?

Respuesta :

InterBase / Firebird tiene la capacidad de usar Alias en sus bases de datos, esto te dará más seguridad pues no es necesario que los usuarios sepan la ruta de acceso o path de las bases de datos, de esta forma pueden usar el alias del nombre para conexión.

Los Alias se guardan en ‘aliases.conf’ que se puede encontrar dentro del path de instalación de InterBase / Firebird, y luce así:

#
# List of known database aliases
# ------------------------------
#
# Examples:
#
# dummy = c:\data\dummy.fdb
#

En Windows:
fbdb = c:\Firebird\sample\Employee.fdb
En Linux:
fbdb = /opt/firebird/sample/employee.fdb
Puedes editar éste archivo con el servidor corriendo y no hay necesidada de reiniciar o detener el servidor para que los cambios tengan efecto.
  #78 (permalink)  
Antiguo 13/07/2007, 14:36
Avatar de mauriciolangea  
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: FAQ de Base de Datos

Tema : Interbase / Firebird

Descripción : Uso de campos de tipo BLOB

Introducción :
InterBase fue la base de datos pionera en el uso de los campos de tipo Blob, un Blob de InterBase o Firebird puede considerarse como una secuencia de bytes arbitrariamente larga que puede manipularse dentro de una transacción.

El nombre blob no significa nada, no definido originalmente como acrónimo para Binary Large Object, o Basic Large Object, el nombre realmente viene de la película de terror "The Blob", el Blob era una criatura del espacio que se comía todo lo que se le cruzaba.

Tipos de BLOB :

Sub-type 0 blob : es creado por defecto cuando se usa el comando CREATE y es un sub-tipo no especificado. Es usado para almacenar información de tipo binario de un tipo no determinado.

Sub-type 1 blob : es usado para almacenar y manipular texto.

CREATE TABLE EMPLOYEES
(
NAME CHAR(20),
HISTORY BLOB SUB_TYPE TEXT
);
O

CREATE TABLE EMPLOYEES
(
NAME CHAR(20) NOT NULL PRIMARY KEY,
HISTORY BLOB SUB_TYPE 1
);
Sub-type 2 blob : es usado para almacenar BLR (Binary Language Representation), como Triggers y Procedimientos almacenados.

Sub-type definido por el usuario :
También podemos definir nuestros propios sub-tipos. Estos se definen colocando un valor negativo con el nombre del sub-tipo. Este valor puede ser completamente arbitrario. Pero debe ser negativo.

CREATE TABLE IMAGE_DATA
(
FILENAME CHAR(12) NOT NULL PRIMARY KEY,
BMP BLOB SUB_TYPE -1,
JPEG BLOB SUB_TYPE -2
);

Última edición por mauriciolangea; 13/07/2007 a las 14:37 Razón: ortografía
  #79 (permalink)  
Antiguo 19/07/2007, 02:12
Avatar de sir_joshua  
Fecha de Ingreso: diciembre-2004
Mensajes: 411
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: FAQ de Base de Datos

BD: Oracle 10g

Tema: Compilacion de Objetos invalidos

Descripcion: Teniendo exportada la variable ORACLE_HOME en el ambiente de SO, podemos ejecutar con el usuario SYS el script utlrp.sql, que el Oracle mismo proporciona, desde la linea de comandos de SQLPlus*.

SQL> @$ORACLE_HOME/rdbms/admin/utlrp

al final consultamos: select * from dba_objects where status='INVALID';

si continuan algunos objetos como invalidos es momento de verificar que todos los grants hayan sido asignados, los objetos creados y los codigos de los store procedures debidamente compilados.
__________________
http://sir-joshua.hi5.com
Mex. Mex.
  #80 (permalink)  
Antiguo 19/07/2007, 02:24
Avatar de sir_joshua  
Fecha de Ingreso: diciembre-2004
Mensajes: 411
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: FAQ de Base de Datos

BD: Oracle 10g R2

Tema: Navegar dentro del ASM como en Filesystem

Descripcion: Exportar como usuario Oracle en SO la variable de ambiente ORACLE_SID con el nombre de la instancia de ASM como valor (+ASM normalmente). Desde la linea de comandos de SO ejecutar:

# asmcmd -p

Esto nos coloca ya dentro del ASM y podemos ejecutar instruccion tales como ls, rm, cd, etc.. como si fuera SO. Para obtener una lista de las instrucciones disponibles teclear ? o help.
__________________
http://sir-joshua.hi5.com
Mex. Mex.
  #81 (permalink)  
Antiguo 21/07/2007, 16:39
Avatar de sir_joshua  
Fecha de Ingreso: diciembre-2004
Mensajes: 411
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: FAQ de Base de Datos

BD: Oracle 10g

Tema: CRS de Oracle no me deja crear una base que ya borre.

Descripcion: Cuando se tiene un RAC de Oracle en ocasiones se llega a borrar una base de datos con el DBCA pero este asistente falla y sigue apareciendo en la configuracion de CRS, esto puede provocar que cuando se intente crear un recurso con el mismo nombre el CRS no lo permita.

Lo que se debe hacer es:

1. Identificar el nombre del recurso
2. Borralo manualmente y continuar.


1.- crs_stat | grep <nombre_del_recurso>
Esto devuelve una salida similar a NAME=<nombre_en_el_crs>

2.- crs_unregister <nombre_en_el_crs>
Ejecutar nuevamente el paso uno y solo regresa el prompt.
__________________
http://sir-joshua.hi5.com
Mex. Mex.
  #82 (permalink)  
Antiguo 09/12/2007, 14:44
Avatar de mauriciolangea  
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 10 meses
Puntos: 0
Firebird

Tema : Interbase / Firebird

Descripción : ¿Cómo programo respaldos en Firebird / InterBase?

Introducción :
Firebird sede éste trabajo en las herramientas que tenga el sistema operativo. En Windows, puedes crear una tarea programada para invocar un pequeño script .BAT en donde puedes crear directorios, invocar los comandos gbak desde el directorio binario de Firebird, y usar herramientas de compresión ZIP o RAR para empaquetar los archivos de respaldo.

En Linux, puedes usar el demonio crond. Puedes configurarlo con el comando 'crontab -e'. Igual que en Windows, puedes configurar una tarea programada para ello. Aquí ha un ejemplo:

Código:
#defino nombre de variable de respaldo
BCKNAME=/home/respaldo/`date +%Y`/mibasededatos-`date +%F`.fbk
LOGNAME=/home/respaldo/`date +%Y`/log/mibasededatos-`date +%F`.log

#si el directorio de respaldo no existe, lo creo
if [ ! -d /home/respaldo/`date +%Y` ]; then
        mkdir /home/respaldo/`date +%Y`
fi
if [ ! -d /home/respaldo/`date +%Y`/log ]; then
        mkdir /home/respaldo/`date +%Y`/log
fi


#elimino archivo de respaldo anterior, si es que corresponde al mismo dia
rm -f $BCKNAME.gz
rm -f $LOGNAME.gz


#inicio respaldo de la base de datos
(gbak -backup -v -ignore -garbage -limbo /var/database/mibasededatos.fdb -user sysdba -pass masterkey $BCKNAME 2>&1) > $LOGNAME

#comprimo respaldo
gzip -9 $BCKNAME
gzip -9 $LOGNAME


#subo la informacion desde el directorio de respaldo a la unidad de cinta
tar -czf /dev/st0 /home/respaldo
  #83 (permalink)  
Antiguo 14/12/2007, 11:01
Avatar de mauriciolangea  
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 10 meses
Puntos: 0
Firebird

Tema : Interbase / Firebird

Descripción : ¿Porque en Ubuntu Dapper LTS tengo problemas al iniciar el demonio de Firebird?

Respuesta:
Cada vez que reinicias el servidor o el deminio de Firebird, el directorio /var/run está vacío, justo después de ...

# Check the file is there and is executable.
MANAGER=$FIREBIRD/bin/fbmgr.bin
[ -x $MANAGER ] || exit 0



... agrega las siguientes líneas al script /etc/init.d/firebird2.

Código:
if [ ! -d /var/run/firebird2 ]
then
        cd /var/run
        mkdir firebird2
        chmod -f 770 firebird2
        chown -f firebird:firebird firebird2
fi
  #84 (permalink)  
Antiguo 03/01/2008, 08:27
Avatar de mauriciolangea  
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 10 meses
Puntos: 0
Firebird

Descripción : ¿Cómo calculo la edad desde un campo fecha en Firebird?

Respuesta:
Asumiendo que la tabla1 contiene un campo tipo fecha con la información de la fecha de nacimiento ...

SELECT EXTRACT(YEAR FROM current_date) - EXTRACT(YEAR FROM campo_fecha)
- CASE WHEN EXTRACT(MONTH FROM current_date) > EXTRACT(MONTH FROM campo_fecha)
THEN 0
ELSE
CASE WHEN EXTRACT(MONTH FROM current_date)
< EXTRACT(MONTH FROM campo_fecha)
THEN 1
ELSE
CASE WHEN EXTRACT(DAY FROM current_date)
< EXTRACT(DAY FROM campo_fecha)
THEN 1
ELSE 0
END
END
END as edad
FROM tabla1
o más sencillo

SELECT CAST((CURRENT_DATE-campo_fecha)/365.25 AS INTEGER) FROM tabla1

Nota : Este script no calcula la edad con meses ni en meses

Última edición por mauriciolangea; 20/11/2008 a las 07:32
  #85 (permalink)  
Antiguo 03/03/2008, 18:54
Avatar de mauriciolangea  
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 10 meses
Puntos: 0
Firebird

Descripción : ¿Que son los archivos Shadow?

Respuesta:
Los archivos Shadow son copias en vivo de la base de dato original activa, permitiendo mantener duplicados en vivo de la base de datos de producción, la que puede ser puesta en produción en caso de una falla de hardware. Estos shadows son administrados en tiempo real por el servidor InterBase/Firebird. Son usados por razones de seguridad: puede la base de datos original ser dañada o incapacitada por problemas de hardware, el shadow puede ser tomado inmediatamente como la base de datos primaria. Entonces, es importante que los archivos shadow no estén en el mismo servidor o almenos en el mismo disco de la base de datos primaria. Los archivos shadow no son usados normalmente en plataformas Windows, como el archivo shadow deba estar en el mismo computador de la base de datos activa. Sin embargo, esto funciona en LINUX/UNIX.

InterBase/Firebird permite hasta 65,536 (216) archivos de base de datos, incluyendo los archivos shadow. Sin embargo, el sistema operativo usado puede tener un límite inferior de archivos abiertos simultaneamente de los que IBServer/FBServer puede tener. En algunos casos, el SO provee medios para incrementar éste límite.

Los archivos shadow, como con la base de datos principal y archivos secundarios, no pueden residir en sistemas de red o remotos (ej. unidades mapeadas en Windows y NFS en UNIX).

Los archivos Shadow ofrece un número de ventajas:
  • Provee protección valiosa de la base de datos, pero igualmente se deben hacer respaldos regulares.
  • Si la base de datos original es dañada, el shadow puede ser activado de inmediato, con uns pequeña pérdida de tiempo.
  • Los archivos shadow corren automáticamente con poco o ningún mantenimiento.
  • Se tiene total control sobre la configuración del shadow, incluído su uso del espacio de disco duro y distribución a travéz de las unidades disponibles.
  • Crear un shadow no requiere acceso exclusivo a la base de datos.
  • Los archivos shadow usan la misma cantidad de espacio en disco que la base de datos original. Lo contrario de los archivos log, los que pueden crecer más que la base de datos original.
  • El Shadow no usa un proceso separado. El proceso de base de datos puede manejas la escritura de el shadow.


Pero también tiene algunas limitaciones:
  • El shadow sólo ayuda a recuperar desde algunos tipo de problema. Si un error de usuario o un problema de InterBase/Firebird causa que la base de datos sea dañada más alla de la recuperación, entonces el shadow quiedará igualmente dañado. Pero si la base de datos es accidentalmente eliminada por el usuario, o un error de hardware en el servidor primario ocurre, entonce el shadow queda intacto y puede ser usado inmediatamente.
  • El shadow no es replicación. Escribe hacia un lado, duplicando casa operación de escritura de la base de datos maestra. Las aplicaciones clientes no puede accesar el archivo shadow en forma directa.
  • El shadow no puede ser usado para devolver la base de datos a un punto específico en el tiempo. Cuando el shadow es usado para recuperar la base de datos, todo queda en el punto en el que el problema ocurrió.
  • El shadow agrega una pequeña penalización de rendimiento a las operaciones de la base de datos. Cada acción sobre la base de datos que modifica los metadatos o los datosa son espejados al shadow.
  • El shadow no reemplaza un cuidadoso sistema de seguridad dentro del sistema operativo, pero es un aspecto o mejora del todo.
  • El shadow también funciona sólo con operaciones que van a travéz del servicio de InterBase/Firebird (GDS), el que procesa todos los SQL y los requerimientos de la base de datos.
  • El shadow puede ocurrir sólo a un disco local. Hacer un shadow a una unidad mapeada o NFS no es posible. Hacer un shadow a una cinta o otro dispositivo tampoco es posible.
  #86 (permalink)  
Antiguo 10/03/2008, 12:41
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 20 años
Puntos: 43
Re: FAQ de Base de Datos

Tema:todas
Descripcion: Ejemplo de base de datos.

En esta pagina podran encontrar unos ejemplos de diseño de base de datos espero que les sirva.

http://www.databaseanswers.org/data_models/index.htm
  #87 (permalink)  
Antiguo 23/07/2010, 11:21
Avatar de mauriciolangea  
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 10 meses
Puntos: 0
Firebird 2.x

Tema: Firebird

Pregunta: ¿Cómo creo un procedimiento para validar RUT en Chile ?

Respuesta:

Mediante el siguiente procedimiento almacenado se puede validar el RUT en Chile mediante el uso del módulo 11.

Fuente:

http://www.dcc.uchile.cl/~mortega/mi...algoritmo.html

Código:
SET TERM ^ ;

CREATE PROCEDURE obtener_dgv 
 ( rut  integer )  RETURNS ( dgv char(1) )
AS 
DECLARE VARIABLE suma       integer; 
DECLARE VARIABLE factor     integer;
DECLARE VARIABLE rut_aux    integer;
DECLARE VARIABLE posicion   integer;
DECLARE VARIABLE largo      integer;
DECLARE VARIABLE result1    integer;
DECLARE VARIABLE result2    integer;
DECLARE VARIABLE dig        integer; 
DECLARE VARIABLE dv         integer; 

BEGIN
    suma     = 0;
    factor   = 2;
    posicion = 0;
    largo    = char_length(:rut);

    WHILE(posicion < largo ) do
        begin
            dig = substring(:rut from (largo-posicion) for 1);

            if (factor = 8) then factor = 2;

            suma     = suma + (dig * factor);

            factor   = factor + 1;
            posicion = posicion + 1;
            
        end

    result1 = suma /11;
    result2 = result1 * 11;
    dv = ((suma-result2)-11)*-1;

    if (dv not in(10, 11)) then dgv = dv;

    if (dv = 11) then dgv = 0;
    
    if (dv = 10) then dgv = 'K';
        
    suspend;

END^

SET TERM ; ^
para ejecutar éste :

SELECT * FROM obtener_dgv(12345678)
  #88 (permalink)  
Antiguo 21/09/2010, 08:33
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: FAQ de Base de Datos

Tema: Base de datos en general

Pregunta: ¿Que motor de base de datos es mejor?

Respuesta: Por sugerencia de gnzsoloyo un articulo al respecto.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Última edición por huesos52; 21/09/2010 a las 08:39
  #89 (permalink)  
Antiguo 04/08/2011, 13:20
Avatar de mauriciolangea  
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 10 meses
Puntos: 0
Respuesta: Firebird

Cita:
Iniciado por mauriciolangea Ver Mensaje
Descripción : ¿Cómo calculo la edad desde un campo fecha en Firebird?

Respuesta:
Asumiendo que la tabla1 contiene un campo tipo fecha con la información de la fecha de nacimiento ...

SELECT EXTRACT(YEAR FROM current_date) - EXTRACT(YEAR FROM campo_fecha)
- CASE WHEN EXTRACT(MONTH FROM current_date) > EXTRACT(MONTH FROM campo_fecha)
THEN 0
ELSE
CASE WHEN EXTRACT(MONTH FROM current_date)
< EXTRACT(MONTH FROM campo_fecha)
THEN 1
ELSE
CASE WHEN EXTRACT(DAY FROM current_date)
< EXTRACT(DAY FROM campo_fecha)
THEN 1
ELSE 0
END
END
END as edad
FROM tabla1
o más sencillo

SELECT CAST((CURRENT_DATE-campo_fecha)/365.25 AS INTEGER) FROM tabla1

Nota : Este script no calcula la edad con meses ni en meses

A tener la necesidad de tener un procedimiento más exacto, llegué a hacer este sencillo Procedimiento Almacenado.

Código:
SET TERM ^ ;
CREATE PROCEDURE CALCULA_EDAD (
    FECHA_NACIMIENTO Date,
    FECHA_HOY Date )
RETURNS (
    EDAD Varchar(60),
    EDAD_ANO Integer,
    EDAD_MES Integer,
    EDAD_DIA Integer )
AS
DECLARE VARIABLE jar   integer;
DECLARE VARIABLE monat integer;
DECLARE VARIABLE dag   integer;
DECLARE VARIABLE ald   date;

DECLARE VARIABLE edadan varchar(30);
DECLARE VARIABLE edadme varchar(30);
DECLARE VARIABLE edaddi varchar(30);
BEGIN
    jar   = extract(year  from FECHA_HOY) - extract(year  from FECHA_NACIMIENTO);
    monat = extract(month from FECHA_HOY) - extract(month from FECHA_NACIMIENTO);
    dag   = extract(day   from FECHA_HOY) - extract(day   from FECHA_NACIMIENTO);

    if (dag < 0) then
       begin
            dag   = 30 - abs(dag);
            monat = monat - 1;
       end
    
    if (monat < 0) then
       begin
            monat = 12 - abs(monat);
            jar   = jar - 1;
       end

    --Arreglo cadena para presentación
    if (jar > 0) then
        if (jar = 1) then
            edadan = jar||' Año ';
        else
            edadan = jar||' Años ';
    else
        if (jar = 0) then
            edadan = '';

    if (monat > 0) Then
        if (monat = 1) then
            edadme = monat||' Mes ';
        else
            edadme = monat||' Meses ';
    else
        if (monat = 0) then
            edadme = '';

    if (dag > 0) then
        if (dag = 1) then
            edaddi = dag||' Día ';
        else
            edaddi = dag||' Días ';
    else
        if (dag = 0) Then
            edaddi = '';

    edad_ano = jar;
    edad_mes = monat;
    edad_dia = dag;

    edad = edadan||edadme||edaddi;

    suspend;

END^
SET TERM ; ^
  #90 (permalink)  
Antiguo 16/12/2011, 17:04
 
Fecha de Ingreso: noviembre-2007
Mensajes: 3
Antigüedad: 17 años
Puntos: 0
Respuesta: FAQ de Base de Datos

Por favor alguien que pueda saber me responda la siguiente duda.
Tengo funcionando firebird en windows 7 funciona bien. Ahora quiero poner la base de datos
agenda.fdb en una carpeta de linux Por ej: /home/usuario/agenda/agenda.fdb
Al ejecutar lazarus con firebird en linux no me funciona da error 10061 --el destino rechazo la
coneccion.
¿Como hago para conectar en linux solo la base de datos? habilite el puerto 3050
en linux : iptables -A INPUT -s tcp --port ip -j ACCEPT .......para udp y para sport
Aun asi da el mismo error.
puse en localhost de ZConnection1 el nombre del servidor de linux y en la databases
la direccion descripta anteriormente y sigue sin funciona
¿Que me falta ?¿Como lo resuelto?
Gracias

Etiquetas: dbs, faq
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 25 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 08:31.