Error sql

Estoy programando el botón ACEPTAR, para un ingreso con password al sistema de la siguiente forma :
SELECT *
FROM USUARIOS
WHERE usuario+clave LIKE trim(sle_user.text)+trim(sle_clave.text);
Pero me arroja un error de sistaxis justo en la primera linea (la del SELECT *), NO entiendo que esta mal ya que al usar el intercative sql me funciona.
¿Hay qué activar algo en alguna parte para que el sistema me acepte instrucciones en SQL?
2

2 respuestas

Respuesta
1
Cuando usas SELECT el pb aumenta una sintaxis a esto, en donde almacena los datos recuperados de la consulta.
Tendría que ser así:
SELECT usuario,clave INTO :ls_user,:ls_clave FROM Usuarios
WHERE usuario=:sle_text and clave = :sle_clave.text;
En donde ls_user y ls_clave, es donde se almacenará los valores del usuario que desea ingresar.
Cualquier duda solo pregunta.
Ah. Ls_user y ls_clave debes de declararlo de acuerdo al tipo de datos que uses en tu tabla.
Respuesta
1
El problema que tienes se encuentra en el carácter de comidin * (asterisco), el motor de SQL de power builder solo permite nombres específicos como selección de columnas, aunque puedes hacer un select sum(*), o un select count(*), no permite utilizar un select *,
Eso por un lado.
Por el otro, hacer un select implica incluir obligatoriamente la instrucción INTO, esto significa que por cada columna seleccionada, deberás tener una variable que reciba el valor de esa columna
por ejemplo
STRING ls_codigo
STRING ls_nombre
STRING ls_direccion
SELECT CLIENTES.CODIGO,
CLIENTES. NOMBRE,
CLIENTES. DIRECCION
INTO :ls_codigo,
:ls_nombre,
:ls_direccion
FROM CLIENTES
WHERE (CLIENTES.TIPO = 1)
USING SQLCA;
En el ejemplo anterior podrás observar la sintaxis valida para la instrucción SELECT.
Como exponía en lineas arriba, una columna seleccionada, tiene una variable que recibe el valor de dicha columna.
El caso cambia un poco cuando utilizas un cursos.
Pues el cursor contiene más de un valor por cada columna
ejm.
STRING ls_codigo
STRING ls_nombre
STRING ls_direccion
BOOLEAN lb_loop
DECLARE cur_clientes CURSOR FOR
SELECT CLIENTES.CODIGO,
CLIENTES.NOMBRE,
CLIENTES.DIRECCION
FROM CLIENTES
WHERE (CLIENTES.TIPO = 1)
USING SQLCA;
OPEN cur_clientes;
DO
FETCH cur_clientes INTO :ls_codigo, :ls_nombre, :ls_direccion;
lb_loop = ((SQLCA.SQLCode = 0) AND (SQLCA.SQLDBCode = 0))
IF lb_loop THEN
Procesos...
...
...
..
.
EN IF
LOOP WHILE lb_loop
Ahora el ejemplo demuestra la variación de valor en las variables, pues estas toman su valor cada vez que es ejecutada la instrucción FETCH, la cual salta secuencialmente una fila del cursor, hacia adelante hasta llegar al final o EOF.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas