![]() |
Funciones postgres buenos dias, estoy tratando de hacer una funcion en postgres que valide si existe un usuario dado el nombre de usuario y contraseña, cuando hago la consulta manualmente funciona, pero cuando la ingreso en la función me muestra el siguiente error: ERROR: syntax error at or near "$1" LINE 1: SELECT execute $1 ^ QUERY: SELECT execute $1 CONTEXT: SQL statement in PL/PgSQL function "f_valida_usuario" near line 5 basicamente lo que estoy haciendo en la funcion es lo siguiente: CREATE OR REPLACE FUNCTION f_valida_usuario(in text,in text) RETURNS boolean as $$ DECLARE query TEXT; result RECORD; BEGIN query = 'SELECT count(*) FROM pg_shadow WHERE usename = ' || quote_literal( $1 ) || ' and passwd = ' || quote_literal( $2 ) || ''; result = execute query; IF result.count = 0 THEN return false; ELSE return true; END IF; END; $$ LANGUAGE 'plpgsql'; ¿podrian ayudarme con mi problema? Muchas gracias |
Respuesta: Funciones postgres no puedes hacer result = execute query; Cuando te muestre $n en un mensaje de error se refiere a un parametro de entrada o una variable declarada dentro de la función, asi veras que el mensaje de error te dice exactamente donde es. Cita:
Código: declare |
Respuesta: Funciones postgres No entiendo el fin de esta comprobación, si solo comprobases el user todavia tendría sentido, pero la password ¿por qué? ¿para qué? Estos son usuarios de la BD! Yo cambiaría esa función de plpgsql a sql, usa plpgsql cuando lo que quieras hacer no se pueda con sql. Código: CREATE OR REPLACE FUNCTION f_valida_usuario(text,text)Salu2 |
Respuesta: Funciones postgres ten en cuenta también, si encriptaste la contraseña del usuario al crearlo! |
Respuesta: Funciones postgres Hola, Estoy haciendo una función que valida los usuarios y no entiendo por qué el siguiente procedimiento no devuleve un registro cuando se cumplen las dos condiciones del where CREATE OR REPLACE FUNCTION prueba4("char", "char") RETURNS RECORD AS $$ SELECT * FROM usuario WHERE usuario=$1 AND contrasena=$2; $$ LANGUAGE 'sql' IMMUTABLE; Saludos |
Respuesta: Funciones postgres Para preguntas nuevas abre un nuevo hilo. Cambia los parametros de la función de char a varchar y cuenta si funciona. Salu2 |
Respuesta: Funciones postgres Si, funcionó, gracias!! ........ :-) Saludos |
Respuesta: Funciones postgres Vale, te explico porque, si declaras un char si precision, declaras un caracter! entonces no creo que tengas usuarios cuyo nombre sea una letra y contraseña otra letra :-P Salu2 |
| La zona horaria es GMT -6. Ahora son las 05:42. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.