[pgsql-es-ayuda] Error en funcion

2010-10-26 Por tema mas...@gmail.com
Hola lista, tengo un problema con la siguiente función:

CREATE OR REPLACE FUNCTION "public"."ins_agencias" (
  char,
  smallint,
  smallint,
  bigint,
  numeric,
  char,
  varchar,
  smallint,
  varchar,
  varchar,
  varchar,
  date,
  double precision,
  double precision,
  varchar
)
RETURNS "pg_catalog"."void" AS
$body$
INSERT INTO   "public"."eMarketing_agencias"
(  id_estado,  co_empresa,  co_filial,  codigo_sap,  rut_agencia,
dv_agencia,  nb_agencia,  ty_agencia,
  nb_contacto,  fono_agencia,  email_agencia,  ult_trabajo,
mo_trabajo,  mo_total_trabajos,
  id_usuario) VALUES ( $1,  $2,  $3,  $4,  $5,  $6,  $7,  $8,  $9,
$10,   $11,  $12,  $13,   $14, $15);
$body$
LANGUAGE 'sql'
VOLATILE
RETURNS NULL ON NULL INPUT
SECURITY INVOKER;

Esta es la tabla :

CREATE TABLE "public"."eMarketing_agencias" (
  "id_estado" CHAR(2) DEFAULT 'SA'::bpchar NOT NULL,
  "co_empresa" SMALLINT DEFAULT 1 NOT NULL,
  "co_filial" SMALLINT DEFAULT 1 NOT NULL,
  "codigo_sap" BIGINT DEFAULT 0 NOT NULL,
  "rut_agencia" NUMERIC(8,0) DEFAULT 0 NOT NULL,
  "dv_agencia" CHAR(1) DEFAULT ''::bpchar NOT NULL,
  "nb_agencia" VARCHAR(100) DEFAULT ''::character varying NOT NULL,
  "ty_agencia" SMALLINT DEFAULT 0 NOT NULL,
  "nb_contacto" VARCHAR(100) DEFAULT ''::character varying NOT NULL,
  "fono_agencia" VARCHAR(12) DEFAULT '0'::character varying NOT NULL,
  "email_agencia" VARCHAR(60) DEFAULT 'a...@aaa.cl'::character varying NOT NULL,
  "ult_trabajo" DATE,
  "mo_trabajo" DOUBLE PRECISION DEFAULT 0 NOT NULL,
  "mo_total_trabajos" DOUBLE PRECISION DEFAULT 0 NOT NULL,
  "id_usuario" VARCHAR(30) DEFAULT 'eMARKETING'::character varying NOT NULL,
  "sq_serialcolumn" SERIAL,
  "fe_creacion" DATE DEFAULT now() NOT NULL,
  CONSTRAINT "eMarketing_agencias_pk" PRIMARY KEY("co_empresa",
"co_filial", "codigo_sap", "rut_agencia"),
  CONSTRAINT "eMarketing_agencias_sq_serialcolumn_key" UNIQUE("sq_serialcolumn")
) WITHOUT OIDS;


Pero al tratar de insertar datos me indica el siguiente error:

ERROR:  function public.ins_agencias("unknown", integer, integer,
integer, integer, "unknown", "unknown", integer, "unknown", "unknown",
"unknown", "unknown", "unknown", "unknown", "unknown") does not exist
HINT:  No function matches the given name and argument types. You may
need to add explicit type casts.


Sinceramente no entiendo que pasa, porque me indica que debo usar cast

Saludos a todos
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


Re: [pgsql-es-ayuda] Error en funcion

2010-10-26 Por tema mas...@gmail.com
Hola Jaime,

el error me lo dá precisamente en los campos char y varchar y eso es
lo que no entiendo

Saludos

El 26/10/10, Jaime Casanova  escribió:
> On Tue, Oct 26, 2010 at 3:07 PM, mas...@gmail.com  wrote:
>>
>> ERROR:  function public.ins_agencias("unknown", integer, integer,
>> integer, integer, "unknown", "unknown", integer, "unknown", "unknown",
>> "unknown", "unknown", "unknown", "unknown", "unknown") does not exist
>> HINT:  No function matches the given name and argument types. You may
>> need to add explicit type casts.
>>
>
> Cuando invoques la funcion agregale casts a los parametros:
>
> select public.ins_agencias(campo1, campo2::smallint, 0::smallint,
>
> y asi, cada vez que ve un numero postgres asume entero pero tu funcion
> recibe smallint (y comprenderas que pasar un valor entero a un campo
> smallint no es la misma cosa)... puede ser que tengas un problemas con
> los campos char pero de eso no estoy muy seguro esos creo que si los
> convierte bien
>
> --
> Jaime Casanova         www.2ndQuadrant.com
> Professional PostgreSQL: Soporte y capacitación de PostgreSQL
>
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


Re: [pgsql-es-ayuda] Error en funcion

2010-10-26 Por tema mas...@gmail.com
Hola Jaime,

el error me lo dá precisamente es en los campos char y varchar y eso es
 lo que no entiendo.

 Saludos

> El 26/10/10, Jaime Casanova  escribió:
>> On Tue, Oct 26, 2010 at 3:07 PM, mas...@gmail.com 
>> wrote:
>>>
>>> ERROR:  function public.ins_agencias("unknown", integer, integer,
>>> integer, integer, "unknown", "unknown", integer, "unknown", "unknown",
>>> "unknown", "unknown", "unknown", "unknown", "unknown") does not exist
>>> HINT:  No function matches the given name and argument types. You may
>>> need to add explicit type casts.
>>>
>>
>> Cuando invoques la funcion agregale casts a los parametros:
>>
>> select public.ins_agencias(campo1, campo2::smallint, 0::smallint,
>>
>> y asi, cada vez que ve un numero postgres asume entero pero tu funcion
>> recibe smallint (y comprenderas que pasar un valor entero a un campo
>> smallint no es la misma cosa)... puede ser que tengas un problemas con
>> los campos char pero de eso no estoy muy seguro esos creo que si los
>> convierte bien
>>
>> --
>> Jaime Casanova www.2ndQuadrant.com
>> Professional PostgreSQL: Soporte y capacitación de PostgreSQL
>>
>
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


Re: [pgsql-es-ayuda] Error en funcion

2010-10-27 Por tema mas...@gmail.com
Hola a todos,

Ya hice eso, tengo la tabla y las funciones con tipo varchar y no char
y aún así la función me sigue dando el mismo error en los datos de
tipo varchar.

Saludos



2010/10/26, Alvaro Herrera :
> Excerpts from mas...@gmail.com's message of mar oct 26 17:41:00 -0300 2010:
>> Hola Jaime,
>>
>> el error me lo dá precisamente es en los campos char y varchar y eso es
>>  lo que no entiendo.
>
> Te recomiendo reemplazar todos los campos char(n) por varchar(n).  Es lo
> único sensato en esta vida.
>
> --
> Álvaro Herrera 
> The PostgreSQL Company - Command Prompt, Inc.
> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
>
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


Re: [pgsql-es-ayuda] Error en funcion

2010-10-27 Por tema mas...@gmail.com
Lo mas curioso es que si hago el insert no dentro de una función sino
como una sentencia sql normal, ésto no pasa

No entiendo que pueda ser

El 27/10/10, mas...@gmail.com  escribió:
> Hola a todos,
>
> Ya hice eso, tengo la tabla y las funciones con tipo varchar y no char
> y aún así la función me sigue dando el mismo error en los datos de
> tipo varchar.
>
> Saludos
>
>
>
> 2010/10/26, Alvaro Herrera :
>> Excerpts from mas...@gmail.com's message of mar oct 26 17:41:00 -0300
>> 2010:
>>> Hola Jaime,
>>>
>>> el error me lo dá precisamente es en los campos char y varchar y eso es
>>>  lo que no entiendo.
>>
>> Te recomiendo reemplazar todos los campos char(n) por varchar(n).  Es lo
>> único sensato en esta vida.
>>
>> --
>> Álvaro Herrera 
>> The PostgreSQL Company - Command Prompt, Inc.
>> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
>>
>
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


Re: [pgsql-es-ayuda] Error en funcion SOLUCIONADO

2010-10-27 Por tema mas...@gmail.com
En efecto el error es en los tipos smallint, lo que no entiendo es lo
siguiente : si puedo modelar utilizando éstos tipos de datos ya que
postgre
El 27/10/10, Alvaro Herrera  escribió:
> Excerpts from mas...@gmail.com's message of mar oct 26 16:12:44 -0300 2010:
>> Hola Jaime,
>>
>> el error me lo dá precisamente en los campos char y varchar y eso es
>> lo que no entiendo
>
> ¿A qué te refieres con que el error te lo da en campos char y varchar?
> El mensaje de error no menciona ningún campo en particular, sólo te está
> diciendo que escogió los tipos para los argumentos 2, 3, 4, 5 y 8 como
> "integer", algunos de los cuales son smallint y otro si no me equivoco
> es bigint.  A esos debes aplicarles un cast.
>
> Honestamente creo que esto es una tontera; usar campos smallint no te
> está ayudando en nada, ni en la función ni en la tabla.  Más sensato
> sería reemplazar todo eso por integer.
>
> --
> Álvaro Herrera 
> The PostgreSQL Company - Command Prompt, Inc.
> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
>
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


Re: [pgsql-es-ayuda] Error en funcion SOLUCIONADO

2010-10-27 Por tema mas...@gmail.com
En efecto, el problema son los campos de tipo smallint, lo que no
entiendo es si postgreSQL, soporta éste tipo de datos ¿porque ocaciona
errores al utilizarlos en funciones y no así en un insert
convencional?

Saludos y Gracias a todos

Mario Soto


El 27/10/10, Alvaro Herrera  escribió:
> Excerpts from mas...@gmail.com's message of mar oct 26 16:12:44 -0300 2010:
>> Hola Jaime,
>>
>> el error me lo dá precisamente en los campos char y varchar y eso es
>> lo que no entiendo
>
> ¿A qué te refieres con que el error te lo da en campos char y varchar?
> El mensaje de error no menciona ningún campo en particular, sólo te está
> diciendo que escogió los tipos para los argumentos 2, 3, 4, 5 y 8 como
> "integer", algunos de los cuales son smallint y otro si no me equivoco
> es bigint.  A esos debes aplicarles un cast.
>
> Honestamente creo que esto es una tontera; usar campos smallint no te
> está ayudando en nada, ni en la función ni en la tabla.  Más sensato
> sería reemplazar todo eso por integer.
>
> --
> Álvaro Herrera 
> The PostgreSQL Company - Command Prompt, Inc.
> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
>
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


Re: [pgsql-es-ayuda] Error en funcion SOLUCIONADO

2010-10-27 Por tema mas...@gmail.com
Hola Jaime, entiendo lo que dices, pero sigo sin entender porque un
insert normal no da el error de los smallint y si los da un insert en
una función.

Saludos

Mario Soto

El 27/10/10, Jaime Casanova  escribió:
> 2010/10/27 mas...@gmail.com :
>> En efecto, el problema son los campos de tipo smallint, lo que no
>> entiendo es si postgreSQL, soporta éste tipo de datos ¿porque ocaciona
>> errores al utilizarlos en funciones y no así en un insert
>> convencional?
>>
>
> te contesto si me contestas una pregunta simple. que tipo de dato
> corresponde al valor siguiente: 5
>
> Si te das cuenta, mi pregunta tiene trampa la verdad, existen 3
> respuestas posibles, porque puede ser: smallint, integer o bigint,
> dependiendo del contexto (que vas a almacenar).
>
> un numero sin cast explicito no tiene un contexto claro asi que
> postgres asume integer
>
> --
> Jaime Casanova         www.2ndQuadrant.com
> Professional PostgreSQL: Soporte y capacitación de PostgreSQL
>
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


Re: [pgsql-es-ayuda] Error en funcion SOLUCIONADO

2010-10-27 Por tema mas...@gmail.com
Alvaro, muy buena explicación acerca  de los tipos, pero disculpen mi
insistencia el porque en un insert normal esta situación no se
produce, pero en una función si se dá éste problema

Saludos cordiales

Mario Soto

El 27/10/10, Alvaro Herrera  escribió:
> Excerpts from Jaime Casanova's message of mié oct 27 10:39:40 -0300 2010:
>
>> te contesto si me contestas una pregunta simple. que tipo de dato
>> corresponde al valor siguiente: 5
>
>> un numero sin cast explicito no tiene un contexto claro asi que
>> postgres asume integer
>
> De hecho es todo un tema saber qué tipo tiene un determinado valor.  Si
> tú decides que un número chico debería considerarse smallint, entonces
> ¿qué pasa con una operación como 256 * 256?  Una alternativa sería
> decidir que tira error de overflow (pero seguro que más de alguien
> reclama).  Otra alternativa sería determinar que el operador int2 * int2
> retorna tipo int4, lo cual ocasionaba otra inconsistencia que no
> recuerdo.
>
> Pero en realidad el gran escollo es el tema de los tipos preferidos
> dentro de cada categoría de tipos.  Actualmente cada categoría tiene un
> tipo preferido (typpreferred creo que se llama la columna en pg_type),
> que es un boolean.  Para poder hacer algo sensato con las conversiones
> de tipo habría que cambiar esa clasificación en una escala: o sea int2
> sería "más" preferido que int4, el cual sería a su vez más preferido que
> int8.  Así, puede haber casts de int2 a int4 y a int8, y el escalafón de
> preferencia podría determinar a qué se va haciendo "promoción" a medida
> que es necesario.  Pero nadie ha explorado totalmente las posibilidades
> y problemas que traería hacer un cambio de este tipo en el sistema de
> tipos.  (En Command Prompt tenemos un cliente que quería que
> arregláramos precisamente este problema, pero hasta el momento no he
> encontrado la energía para ponerme en ello).
>
> Hay que agregar que el sistema de tipos de Postgres es de los más
> complejos que existen en las implementaciones de tipado fuerte, dando
> cabida a extensibilidad dentro del sistema, es decir, que el usuario
> puede crear nuevos tipos e influir en los algoritmos de selección, y que
> el resultado siga siendo coherente (si bien no siempre es 100%
> satisfactorio para todo el mundo).
>
>
> Finalmente quisiera acotar que los tipos más chicos no necesariamente
> permiten ahorrar espacio de almacenamiento.  Por ej. considera la
> siguiente tabla:
>
> a int2
> b int4
>
> Dado que el tipo int4 tiene alineamiento de 4 bytes, queda un "hueco"
> entre las columnas a y b de 2 bytes, por lo que sigue ocupando 8 bytes.
> Dadas todas las complicaciones que implica usar tipo int2, sale más
> fácil usar int4 para ambas columna, y usas el mismo espacio de
> almacenamiento sin ninguno de los inconvenientes.
>
> --
> Álvaro Herrera 
> The PostgreSQL Company - Command Prompt, Inc.
> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
>
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


Re: [pgsql-es-ayuda] Error en funcion

2010-10-27 Por tema mas...@gmail.com
Gracias a todos por sus comentarios, lo solucioné cambiando el tipo
smallint por integer

Saludos

Mario Soto

2010/10/27, Jenaro Centeno Gómez :
> En realidad viendo la definición de la función y el error que te
> devuelve se puede ver que no estas llamando la función con los mismos
> parámetros con los que la creaste, recuerda que en PostgreSQL puedes
> manejar varias funciones con el mismo nombre (sobrecarga).
>
> Saludos.
>
> El 27/10/10 12:18 p.m., eduardo reyes escribió:
>> Saludos..
>> Solo tienes que especificar la longitud de cada campo CHAR(20),
>> VARCAHR(40)
>>
>>
>> 2010/10/26 mas...@gmail.com <mailto:mas...@gmail.com>
>> mailto:mas...@gmail.com>>
>>
>> Hola lista, tengo un problema con la siguiente función:
>>
>> CREATE OR REPLACE FUNCTION "public"."ins_agencias" (
>>  char,
>>  smallint,
>>  smallint,
>>  bigint,
>>  numeric,
>>  char,
>>  varchar,
>>  smallint,
>>  varchar,
>>  varchar,
>>  varchar,
>>  date,
>>  double precision,
>>  double precision,
>>  varchar
>> )
>> RETURNS "pg_catalog"."void" AS
>> $body$
>> INSERT INTO   "public"."eMarketing_agencias"
>> (  id_estado,  co_empresa,  co_filial,  codigo_sap,  rut_agencia,
>> dv_agencia,  nb_agencia,  ty_agencia,
>>  nb_contacto,  fono_agencia,  email_agencia,  ult_trabajo,
>> mo_trabajo,  mo_total_trabajos,
>>  id_usuario) VALUES ( $1,  $2,  $3,  $4,  $5,  $6,  $7,  $8,  $9,
>> $10,   $11,  $12,  $13,   $14, $15);
>> $body$
>> LANGUAGE 'sql'
>> VOLATILE
>> RETURNS NULL ON NULL INPUT
>> SECURITY INVOKER;
>>
>> Esta es la tabla :
>>
>> CREATE TABLE "public"."eMarketing_agencias" (
>>  "id_estado" CHAR(2) DEFAULT 'SA'::bpchar NOT NULL,
>>  "co_empresa" SMALLINT DEFAULT 1 NOT NULL,
>>  "co_filial" SMALLINT DEFAULT 1 NOT NULL,
>>  "codigo_sap" BIGINT DEFAULT 0 NOT NULL,
>>  "rut_agencia" NUMERIC(8,0) DEFAULT 0 NOT NULL,
>>  "dv_agencia" CHAR(1) DEFAULT ''::bpchar NOT NULL,
>>  "nb_agencia" VARCHAR(100) DEFAULT ''::character varying NOT NULL,
>>  "ty_agencia" SMALLINT DEFAULT 0 NOT NULL,
>>  "nb_contacto" VARCHAR(100) DEFAULT ''::character varying NOT NULL,
>>  "fono_agencia" VARCHAR(12) DEFAULT '0'::character varying NOT NULL,
>>  "email_agencia" VARCHAR(60) DEFAULT 'a...@aaa.cl
>> <mailto:a...@aaa.cl>'::character varying NOT NULL,
>>  "ult_trabajo" DATE,
>>  "mo_trabajo" DOUBLE PRECISION DEFAULT 0 NOT NULL,
>>  "mo_total_trabajos" DOUBLE PRECISION DEFAULT 0 NOT NULL,
>>  "id_usuario" VARCHAR(30) DEFAULT 'eMARKETING'::character varying
>> NOT NULL,
>>  "sq_serialcolumn" SERIAL,
>>  "fe_creacion" DATE DEFAULT now() NOT NULL,
>>  CONSTRAINT "eMarketing_agencias_pk" PRIMARY KEY("co_empresa",
>> "co_filial", "codigo_sap", "rut_agencia"),
>>  CONSTRAINT "eMarketing_agencias_sq_serialcolumn_key"
>> UNIQUE("sq_serialcolumn")
>> ) WITHOUT OIDS;
>>
>>
>> Pero al tratar de insertar datos me indica el siguiente error:
>>
>> ERROR:  function public.ins_agencias("unknown", integer, integer,
>> integer, integer, "unknown", "unknown", integer, "unknown", "unknown",
>> "unknown", "unknown", "unknown", "unknown", "unknown") does not exist
>> HINT:  No function matches the given name and argument types. You may
>> need to add explicit type casts.
>>
>>
>> Sinceramente no entiendo que pasa, porque me indica que debo usar cast
>>
>> Saludos a todos
>> -
>> Enviado a la lista de correo pgsql-es-ayuda
>> (pgsql-es-ayuda@postgresql.org <mailto:pgsql-es-ayuda@postgresql.org>)
>> Para cambiar tu suscripción:
>> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>>
>>
>
>
> --
> 
> *L.A. Jenaro Centeno Gómez*
> *Director de Desarrollo*
> *InterAprende Multimedia*
> *http://www.interaprende.net*
> 
>
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


[pgsql-es-ayuda] Crostab Invertida

2010-11-05 Por tema mas...@gmail.com
Hola lista, tengo una consutla,

tengo una tabla en PostgreSQl
con el siguiente formato:

campo1, campo2, campo3

Lo que quiero es una consulta que me permita ver el resultado de la tabla
así:

campo1
campo2
campo3

Es como una crostab pero invertida

Puedo hacer eso

Saludos a todos y gracias


Re: [pgsql-es-ayuda] Crostab Invertida (SOLUCIONADO)

2010-11-05 Por tema mas...@gmail.com
Lista, ya lo solucione untilizando UnPivot

Gracias y disculpen las molestias




El 5 de noviembre de 2010 12:32, mas...@gmail.com escribió:

> Hola lista, tengo una consutla,
>
> tengo una tabla en PostgreSQl
> con el siguiente formato:
>
> campo1, campo2, campo3
>
> Lo que quiero es una consulta que me permita ver el resultado de la tabla
> así:
>
> campo1
> campo2
> campo3
>
> Es como una crostab pero invertida
>
> Puedo hacer eso
>
> Saludos a todos y gracias
>


Re: [pgsql-es-ayuda] Error en funcion SOLUCIONADO

2010-11-16 Por tema mas...@gmail.com
Muy buena explicación ... y recogiendo lo que inicialmente explicastes creo
es recomendable utilizar integer y no smallint

Saludos cordiales

Mario Soto
El 15 de noviembre de 2010 16:50, Alvaro Herrera  escribió:

> Excerpts from Alvaro Herrera's message of mié oct 27 11:19:08 -0300 2010:
> > Excerpts from mas...@gmail.com's message of mié oct 27 11:07:04 -0300
> 2010:
> > > Alvaro, muy buena explicación acerca  de los tipos, pero disculpen mi
> > > insistencia el porque en un insert normal esta situación no se
> > > produce, pero en una función si se dá éste problema
> >
> > Lo voy a investigar y te cuento.
>
> La explicación era bien sencilla: el cast desde int4 a int2 es "en
> asignación".  Esto quiere decir que se aplica cuando se asigna el valor
> a una columna de una tabla.  Es decir, si tienes
>
> CREATE TABLE masc (a int2)
> INSERT INTO masc VALUES (42);
>
> el valor 42 recibe inicialmente tipo int4, pero como se está asignando a
> una columna de tipo int2, se aplica cualquier cast de asignación que
> exista.  Por lo tanto eso funciona.
>
> En cambio, cuando llamas a una función,
>
> CREATE FUNCTION masc (a int2) RETURNS int4 LANGUAGE sql AS $$
>  SELECT $1 + 1 $$;
>
> sólo se permiten casts de tipo implícito.  Ese no es implícito así que
> no funciona:
>
> alvherre=# select masc(42);
> ERROR:  no existe la función masc(integer)
> LÍNEA 1: select masc(42);
>^
> SUGERENCIA:  Ninguna función coincide en el nombre y tipos de argumentos.
> Puede desear agregar conversión explícita de tipos.
>
>
>
> Pero por ej. el cast int4 a float8 sí es implícito, así que esto sí
> funciona:
>
> alvherre=# CREATE or replace FUNCTION masc2 (a float8) RETURNS int4
> LANGUAGE sql AS $$
>  select cast($1 + 1 as integer); $$;
> CREATE FUNCTION
> alvherre=# select masc2(42);
>  masc2
> ───
>43
> (1 fila)
>
>
> El motivo por el cual la conversión de int4 a int2 es explícito pero el
> de int4 a float8 es en asignación tiene que ver con el hecho de que int2
> no necesariamente puede representar todo el dominio de int4.
>
> Para más detalles sobre las conversiones de tipo (“casts”), mira la
> referencia de CREATE CAST:
>http://www.postgresql.org/docs/9.0/static/sql-createcast.html
>
> --
> Álvaro Herrera 
> The PostgreSQL Company - Command Prompt, Inc.
> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
>


[pgsql-es-ayuda] Obtener el esquema de una tabla

2010-11-17 Por tema mas...@gmail.com
Hpla lista, tengo una consulta que saca informacion de las tablas del
catalogo de postgresql


SELECT a.attnum, a.attname AS column_name
FROM pg_class c, pg_attribute a, pg_type t
WHERE c.relname = 'eMarketing_modelos'::name AND a.attnum > 0 AND
a.attrelid = c.oid AND a.atttypid = t.oid AND (a.attname =
'nb_systbl_1'::name OR a.attname = 'nb_systbl_2'::name OR
a.attname
= 'nb_systbl_3'::name OR a.attname = 'nb_systbl_4'::name OR
a.attname = 'nb_systbl_5'::name OR a.attname =
'nb_systbl_6'::name
OR a.attname = 'nb_systbl_7'::name OR a.attname =
'nb_systbl_8'::name OR a.attname = 'nb_systbl_9'::name OR
a.attname
= 'nb_systbl_10'::name)

Pero necesito filtrar en ésta consuta que las tablas pertenezcan a cierto
esquema, mi preguna es como puedo filtrar el esquema en el catalogo

Saludos cordiales


Re: [pgsql-es-ayuda] Obtener el esquema de una tabla

2010-11-17 Por tema mas...@gmail.com
Gracias, funcionó bien

Atentamente

Mario Soto Cordones

El 17 de noviembre de 2010 12:17, Alvaro Herrera  escribió:

> Excerpts from mas...@gmail.com's message of mié nov 17 12:00:12 -0300
> 2010:
>
> > Pero necesito filtrar en ésta consuta que las tablas pertenezcan a cierto
> > esquema, mi preguna es como puedo filtrar el esquema en el catalogo
>
> Agrega el catalogo pg_namespace (pg_class.relnamespace =
> pg_namespace.oid) y haz un where nspname = el-esquema
>
> --
> Álvaro Herrera 
> The PostgreSQL Company - Command Prompt, Inc.
> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
>


Re: [pgsql-es-ayuda] Consulta sobre esquemas de auditorias

2010-11-19 Por tema mas...@gmail.com
En efecto el paquete table_log, permite generar log de las transacciones
(INSERT,DELETE,UPDATE) a tablas

desconozco si en forma nativa postgreSQL haga ésto, lo que sé es que los log
de postgreSQL, dependiendo de como los configures tienen información muy
rica de todo lo que ocorre en el entorno de postgreSQL.

Personalmente utilizo table_log con muy buenos resultados

Saludos Cordiales

Mario Soto

El 18 de noviembre de 2010 13:15, gilson caballero <
gilsoncaball...@gmail.com> escribió:

> Buen dia, soy de asuncion, paraguay, y tengo un mini paper que preparar
> acerca de esquemas o mecanismos de auditorias en postgres, estuve mirando
> por la web y encontre que se pueden crear mecanismos pero de manera manual
> por decir asi, o sea utilizando triggers, mi pregunta es si postgres trae de
> manera nativa algunos esquemas para utilizar o la unica manera es
> codificando estos disparadores?
>
> Muchas gracias por su colaboracion
>
> Saludos


[pgsql-es-ayuda] Updatear un substring

2010-11-24 Por tema mas...@gmail.com
HOla lista,

tengo una duda, estroy tratando de hacer un update de la sigueinte forma:

UPDATE "eMarketing_estord"
 SET  SUBSTRING(est_orden,3,1) = '1'
   WHERE co_orden = 'POS036';

pero me sal el siguiente error:

ERROR:  syntax error at or near "("
LINE 1: UPDATE "eMarketing_estord" SET SUBSTRING(est_orden,3,1) = 1


Acaso no se puede hacer un update así ?

Saludos cordiales

Mario Soto


Re: [pgsql-es-ayuda] En busqueda de informacion de postgresql

2010-12-03 Por tema mas...@gmail.com
Hola,

te recomiendo para auditorias implementar table_log, funciona muy bien

Saludos

2010/12/2 jorge ricardo andres zambrano chavez 

>
> Hola mi nombre es Jorge Zambrano, en estos momentos esto trabajando en un
> sistema que se esta desarrollando en postgresql y necesito implementar un
> sistema de auditoria y encontre  unos ejemplos en la web que me funcionan
> que hay parte de en codigo que no comprendo, haber si me puedes guiar, pue
> no e podido encontrar informacion al respecto
>  las lineas que no entiendo estan en rojo
>
>
> De ante manos, muchas gracias
>
>
> CREATE OR REPLACE FUNCTION set_session(session_name TEXT, session_value TEXT)
>   RETURNS VOID AS
> $BODY$
> BEGIN
>   PERFORM relname
>   FROM pg_class
>   WHERE relname = 'tbl_session'
> AND CASE WHEN has_schema_privilege(relnamespace, 'USAGE')
>  THEN pg_table_is_visible(oid) ELSE false END;
>   IF not found THEN
> CREATE TEMPORARY TABLE tbl_session (name TEXT, value TEXT);
>   ELSE
> DELETE FROM tbl_session WHERE name = session_name;
>   END IF;
>
>   INSERT INTO tbl_session VALUES (session_name, session_value);
> END;
> $BODY$
> LANGUAGE 'plpgsql' VOLATILE
> COST 100;
>
>
>
>
> CREATE OR REPLACE FUNCTION get_session(session_name text)
>   RETURNS text AS
> $BODY$
> BEGIN
>   PERFORM relname
>   FROM pg_class
>   WHERE relname = 'tbl_session'
> AND CASE WHEN has_schema_privilege(relnamespace, 'USAGE')
>  THEN pg_table_is_visible(oid) ELSE false END;
>   IF not found THEN
> RETURN NULL;
>   ELSE
> RETURN (SELECT value FROM tbl_session WHERE name = session_name);
>   END IF;
> END;
> $BODY$
>   LANGUAGE 'plpgsql' STABLE
>   COST 100;ALTER FUNCTION get_session(text) OWNER TO postgres;
>
>
>
>
>
> *Atte.*
>
> *Jorge Ricardo A.  Zambrano Chávez*
>
> *Ingeniero de Ejecución en Informática*
>
> **
>
>
>


Re: [pgsql-es-ayuda] urgente!!!

2011-10-12 Por tema mas...@gmail.com
Hola te recomiendo implementar las funciones de table_log, sirven para 2
cosas, hacer auditoría y recuperar datos

Saludos
El 12 de octubre de 2011 00:41, Jennys Almaguer <
jalmag...@estudiantes.uci.cu> escribió:

> Hola que sepan que soy novata en este sitio, pero tengo que aprovechar para
> hacer mi pregunta.
> Por ejemplo yo tengo en una base de datos una serie de estudiantes con
> datos y demás... borro un estudiante por equivocación...
> que vías existe para poder recuperar este estudiante__???
> ya he visto los backup y las contraindicaciones que tiene
>  Existen otras vías para recuperar al estudiante_
> saludosss
>
>
>   
>
>