Mostrando entradas con la etiqueta PostgreSQL. Mostrar todas las entradas
Mostrando entradas con la etiqueta PostgreSQL. Mostrar todas las entradas

sábado, 1 de octubre de 2016

PostgreSQL 9.6


Desde el 29 de septiembre de 2016 se encuentra disponible para ser descargada en sus versiones de 32 bits y de 64 bits, la versión PostgreSQL 9.6.

Puedes descargarla desde:

http://www.enterprisedb.com/products-services-training/pgdownload#windows

lunes, 5 de septiembre de 2016

DataWindows con Function PostgreSQL con parametros tipo Fecha

Ya habíamos visto antes:

1. Como trabajar con fechas y horas en una base de datos PostgreSQL en el post Trabajando con Fechas y Horas en PostgreSQL

2. Como usar una función de PostgreSQL en un DataWindow en el post Usando Function PostgreSQL en DataWindow

Ahora en este post veremos como trabaja un DataWindow con un objeto Function de PostgreSQL que tiene parametros de tipo Fecha.

El objeto Function PostgreSQL tiene los siguientes parametros:
Los parametros p_fec_ini y p_fec_fin ambos deben ser tipo char(10), estos nos serviran para poder asignar una fecha inicial y una fecha final y tener el resultado entre el rango de esas fechas.

En el WHERE utilizar TO_CHAR y dar el formato 'dd/mm/yyyy'









En el DataWindow Object, establecemos los argumentos:
En el siguiente cuadro pertenece a la documentación oficial de PostgreSQL, podremos ver los formatos para tipos de datos. 












Mas detalle en el siguiente enlace: https://www.postgresql.org/docs/9.5/static/functions-formatting.html)

sábado, 3 de septiembre de 2016

Trabajando con SqlDbx

Recomiendo la herramienta SqlDbx, la cual tiene dos versiones:

1. SqlDbx Professional

2. SqlDbx Personal Edition (Versión Free)

Trabajo con la Versión Free, para conectarme a Oracle y a PostgreSQL, pero tambien soporta otros motores. Pueden descargarla desde la misma web de la herramienta:

http://www.sqldbx.com/personal_edition.htm

martes, 30 de agosto de 2016

Usando Function PostgreSQL simple en DataWindow

Ya habíamos visto como usar una función de PostgreSQL en un DataWindow:

Usando Function PostgreSQL en DataWindow

Hay casos mas simples, donde necesitamos usar un SELECT mas simple. Ejemplo necesitamos un DDDW en el cual podamos listar el id y el nombre de los productos, entonces creamos la función en PostgreSQL, con el siguiente código:

























dom_integer, dom_bigint y dom_nombrelargo son dominios. Ya hemos visto sobre dominios en este post:

Usando Dominios en PostgreSQL

Hay 2 opciones para ejecutar la función:







Cualquiera de las 2 opciones la copiamos en el Data Source del DataWindow y listo.

miércoles, 17 de agosto de 2016

Listar tablas con su primary key en PostgreSQL

El siguiente script, devuelve todas las tablas de una base de datos PostgreSQL, con su respectiva primary key:


martes, 16 de agosto de 2016

Equivalencia de Tabla DUAL de Oracle en PostgreSQL

En Oracle existe la Tabla DUAL, que es una tabla, creada durante la instalación, con una sola columna llamada DUMMY de VARCHAR2(1)  y una sola fila de contenido 'X'. El propietario es SYS y puede ser accedida por cualquier usuario.


Se usa generalmente para ejecutar funciones como SYSDATE.

La Tabla Dual no existe en PostgreSQL, pero hay dos soluciones:

1. Crear la Tabla Dual:

create table public.dual
(
  dummy VARCHAR(1)
);

2. Esta es la que uso: solo ejecutando SELECT con el valor que se requiere, ejemplo:

Necesito tener en un combo todas las familias de un producto, para un filtro en una ventana, al seleccionar una familia debe filtrar los productos que pertenecen a esa familia. La tabla tiene la siguiente estructura:


En mi combo necesito también el dato 'TODAS', para que así el filtro devuelva los productos que pertenecen a las 5 familias.

En Oracle usando:


En PostgreSQL:


Entonces hacemos el siguiente script, que luego lo copiamos en el SQL de un DataWindow:


Espero sea ayuda para ustedes.

lunes, 4 de julio de 2016

Usando Dominios en PostgreSQL

Un dominio es simplemente un tipo de datos personalizado que hereda el comportamiento de otro tipo de datos y a los que una o más restricciones pueden ser añadidos.

Ejemplo:

Crear un dominio de tipo char que solo permita registrar los valores '1' (VIGENTE) y '0' (ANULADO)

Crear una tabla y asignar el dominio, al campo requerido.

El campo ESTADO, tiene asignado el dominio DOM_INDICADOR, como tipo de dato, no se puede insertar otro valor que no sea '1' o '0'.
(Dar clic en la imagen para agrandar)

En el siguiente enlace podrás obtener información al respecto:
https://www.postgresql.org/docs/current/static/sql-createdomain.html

sábado, 2 de julio de 2016

Obtener las columnas de una tabla de una base de datos PostgreSQL

Para obtener las columnas de una tabla que hemos creado en una base de datos PostgreSQL necesitamos ejecutar lo siguiente:

Ejemplo:


lunes, 20 de junio de 2016

Obtener las tablas de una base de datos PostgreSQL

Para obtener las tablas que hemos creado en una base de datos PostgreSQL necesitamos ejecutar lo siguiente:

Tambien podemos usar:

miércoles, 15 de junio de 2016

Obtener Fecha y Hora del Servidor PostgreSQL

Creamos un objeto Function en PowerBuilder para poder obtener la fecha del servidor PostgreSQL.

1. Clic en New del PowerBar 
2. En la siguiente ventana seleccionamos Function de la pestaña PB Object y luego clic en el botón OK.
(Imagen 1. Dar clic en la imagen para agrandar)

3. En el objeto Function establecemos y escribimos lo siguiente:
(Imagen 2. Dar clic en la imagen para agrandar)

4. Se invocara al objeto Function de la siguiente manera (ejemplo):

dw_1.Object.fecha[ll_Fila] = f_datetime_server()

martes, 14 de junio de 2016

Usando Secuencias en PostgreSQL

Vamos a trabajar con Secuencias (Sequence) en PostgreSQL y en los siguientes enlaces podrás obtener información al respecto, les sugiero leerlos:

Una secuencia es un tipo especial de objeto de base de datos diseñada para generar identificadores numéricos únicos. Por lo general se utiliza para generar claves primarias.

Crear Secuencia en PostgreSQL

Esta es la estructura para crear una secuencia en PostgreSQL:

(Imagen 1)

STAR = Indica el valor desde el cual comenzará la generación de números secuenciales

INCREMENT = especifica el incremento, es decir, la diferencia entre los números de la secuencia; debe ser un valor numérico entero positivo o negativo diferente de 0. Si no se indica, por defecto es 1.

MINVALUE = Establece el valor mínimo de la secuencia.

MAXVALUE = Define el valor máximo para la secuencia. Si se omite, por defecto es 9223372036854775807.

CYCLE = Indica que, cuando la secuencia llegue a máximo valor (valor de "maxvalue") se reinicie, comenzando con el mínimo valor ("minvalue") nuevamente, es decir, la secuencia vuelve a utilizar los números. Si se omite, por defecto la secuencia se crea "nocycle", lo que produce un error si supera el máximo valor.

Si no se especifica ninguna cláusula, excepto el nombre de la secuencia, por defecto, comenzará en 1, se incrementará en 1, el mínimo valor será -9223372036854775808, el máximo será 9223372036854775807 y "nocycle".

Asociar Secuencia a campo de Tabla en PostgreSQL

Si vamos a crear una tabla nueva y queremos asociar una secuencia a un campo, este es el código:

Si ya existe la tabla y queremos asociar una secuencia a un campo, este es el coódigo:

Por ultimo vuelvo a repetir: Por lo general se utiliza para generar claves primarias.

lunes, 13 de junio de 2016

Usando Function PostgreSQL en DataWindow

En PostgreSQL no existen el objeto Stored Procedure, pero si el objeto Function que en PostgreSQL cumple al máximo como cualquier objeto Stored Procedure de otro motor de base de datos, ejemplo Oracle (mi preferido) y SQL Server(mi segundo preferido).

Y porque necesitamos trabajar con Stored Procedure (Oracle y SQL Server) o Function (PostgreSQL), por las siguientes ventajas: 
  • Rapidez, 
  • Seguridad, 
  • Encapsulamiento
  • Separar capas

La ejecución del Stored Procedure (Oracle y SQL Server) o Function (PostgreSQL) ocurre en el servidor de bases de datos. Esto probablemente aumentará el rendimiento de nuestra aplicación al no tenerse que mandar datos entre el cliente y el servidor, y no tener que procesar resultados intermedios en el cliente para obtener el resultado final.

Al tener la lógica de la aplicación implementada en la base de datos no tendremos que implementarla en los clientes, con el consiguiente ahorro de lineas de código redundante y complejidad.

Usar un objeto Function PostgreSQL en un DataWindow

El objeto DataWindow es muy potente y si esta asociado con un Stored Procedure (Oracle y SQL Server) o Function (PostgreSQL) obtendremos rapidez en los resultados que se requiere.

Seguiremos los siguientes pasos:

Paso1. Crear un objeto Type en PostgreSQL

En los siguientes enlaces podrás obtener mas información al respecto, les sugiero leerlos:
https://www.postgresql.org/docs/9.5/static/sql-createtype.html
https://www.postgresql.org/docs/9.5/static/rowtypes.html

Crearemos un Composite Types por código:


(Imagen 1)

Este Type esta comformado por varias campos con su respectivo tipo de dato.

Paso 2. Crear un objeto Function en PostgreSQL


En el siguiente enlace podrás tener mas información sobe Functions:
https://www.postgresql.org/docs/9.5/static/sql-createfunction.html


(Imagen 2)


En la linea RETURNS SETOF public.t_fu_sel_cliente AS se invoca al Type creado en el Paso 1, note que la estructura del Type es el mismo a la que esta dentro del SELECT, es decir son los mismo campos. Así se trabaja en PostgreSQL para devolver un SELECT desde un objeto Function PostgreSQL.

Paso 3. Crear un objeto DataWindow en PowerBuilder.

1. Creamos un nuevo objeto DataWindow:
(Imagen 3)

2. Elegimos SQL Select, clic en Next.
(Imagen 4)

3. Clic en el botón Cancel.
(Imagen 5)

4. Clic en Convert To Syntax de la opción Design
(Imagen 6)

5.Creamos 02 argumento que son los que necesita el objeto Function PostgreSQL
(Imagen 7)

(Imagen 8)

8. Debemos escribir lo siguiente:
(Imagen 9)

Y listo, eso es todo lo que necesitamos.

domingo, 12 de junio de 2016

Trabajando con Fechas y Horas en PostgreSQL

Vamos a trabajar con fechas y horas en PostgreSQL, así que empezamos.

Tipos Fecha/Hora
PostgreSQL soporta un conjunto completo de tipos SQL de datos de fecha y de hora. Los tipos de datos de fecha y hora del motor de base de datos PostgreSQL son:
(Imagen 1. Dar clic en la imagen para ver mas grande)


Fecha actual
(Imagen 2. Dar clic en la imagen para ver mas grande)

Sin zona horaria/Con zona horaria
(Imagen 3. Dar clic en la imagen para ver mas grande)

EXTRACT
(Imagen 4. Dar clic en la imagen para ver mas grande)

DATE_PART
(Imagen 5. Dar clic en la imagen para ver mas grande)

DATE_TRUNC
(Imagen 6. Dar clic en la imagen para ver mas grande)

INTERVAL
(Imagen 7. Dar clic en la imagen para ver mas grande)

Mas detalle en los siguientes enlaces:

sábado, 11 de junio de 2016

Crear objetos de base de datos PostgreSQL

Podemos crear cualquier objeto de base de datos PostgreSQL, desde el Maestro PostgreSQL, siguiendo los siguientes pasos:

1. Dar clic en la opción Create new database object.
(Imagen 1. Dar clic en la imagen para agrandar)

2. En la siguiente ventana se muestra los diferentes objetos que podemos crear en la base de datos PostgreSQL
(Imagen 2. Dar clic en la imagen para agrandar)

viernes, 10 de junio de 2016

Tipos de Datos PostgreSQL

En el siguiente enlace que pertenece a la documentación oficial, podrás obtener la información de los tipos de datos disponibles de PostgreSQL:

https://www.postgresql.org/docs/9.5/static/datatype.html

Tipos de datos de propósito general en PostgreSQL

A continuación un listado de los tipos de datos de carácter o propósito general, los más habituales:
(Imagen 1. Dar clic en la imagen para ver mas grande)

jueves, 9 de junio de 2016

Trabajando con PostgreSQL Maestro

PostgreSQL Maestro es una herramienta de administración grafica para la gestión de bases de datos, control y desarrollo. Las características principales son:

- Soporta todas las versiones de PostgreSQL desde la versión 7.3
- Fácil gestión de objetos de base de datos
- Cuenta con un diseñador de bases de datos
- Permite escribir y ejecutar scripts
- Permite importar/exportar datos desde los formatos más populares
- Dispone de un visor y editor de columnas BLOB

Mas detalles en: http://www.sqlmaestro.com/products/postgresql/maestro/

Conectar una base de datos existente

Ya tienes instalado PostgreSQL, el driver ODBC, PostgreSQL Maestro y ya tienes una base de datos, entonces sigue los siguientes pasos:

1. Abrimos PostgreSQL Maestro y dar clic en connect to an existing database
(Imagen 1. Dar clic en la imagen para ver mas grande)

2. En la siguiente ventana ingresar los parametros de conexión y clic en el botón Next:
(Imagen 2. Dar clic en la imagen para ver mas grande)

3. En la siguiente ventana:

(1) Seleccionamos la base de datos 
(2) Clic en el botón con flecha > 
(3) Clic en el botón Next 
(Imagen 3. Dar clic en la imagen para ver mas grande)

4. En la siguiente ventana clic en el botón Ready
(Imagen 4. Dar clic en la imagen para ver mas grande)

Listo, ya puedes empezar a trabajar.

miércoles, 8 de junio de 2016

Conexión a PostgreSQL desde PowerBuilder Classic 12.5

Para conectarse a una Base de Datos PostgreSQL desde PowerBuilder Classic 12.5 seguimos los siguientes pasos:

1. En la siguiente ruta: C:\Windows\SysWOW64 ubicamos odbcad32 y le damos doble clic

2. En la siguiente ventana Administrador de orígenes de datos ODBC:

Primero: Clic en el botón Agregar
Segundo: Elegir PostgreSQL Unicode y dar clic en Finalizar
Tercero: Ingresar los siguientes datos:

Data Source  = Nombre del driver de conexión
Database      = Nombre de la base de datos a conectar
Server           = Nombre o dirección del servidor
User Name   = Nombre de usuario (por defecto postgres)
Password      = Contraseña de usuario
Luego dar clic en el botón Test para comprobar si la conexión es satisfactoria y posteriormente clic en el botón Save.

3. En PowerBuilder, clic derecho al driver ODB ODBC opción New Profile
4. En la siguiente ventana Database Profile Setup - ODBC:

Primero: En la pestaña Connection ingresamos los datos de conexión 
 Segundo: En la pestaña Preview clic en botón Test Connection y listo.
5. En el evento open del objeto Application, se debe colocar la cadena de conexión:

//----------------------------------------------------------------------------------------------------
// Conexión a Base de Datos
//----------------------------------------------------------------------------------------------------
// Profile BDMASTER
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=PGMaster;UID=postgres;PWD=CONTRASEÑA'"

CONNECT USING SQLCA;
//----------------------------------------------------------------------------------------------------