PDA

Ver la Versión Completa : Saber si Select Single Regreso mas de 1 registro


aldape
11/02/08, 16:30:52
Saber si Select Single Regreso mas de 1 registro..

Es posible?

Saludos.

temaljose
11/02/08, 16:51:41
el select single te regresa nada mas una entrada si existen varias te agarra la entrada mas antigua, si quieres que un select te agarre todas las entradas utiliza el select * into table, por ejemplo pero existen varias formas yo utilizo esta porque me parece mas eficiente, espero haberte ayudado, saludos

Jorge L T
11/02/08, 16:54:02
Saber si Select Single Regreso mas de 1 registro..
Un Select Single devuelve UN sólo registro o fila de la tabla en cuestión, sy-subrc = 0 => OK, sy-subrc = 4 => sin registros para el where definido
J

aldape
11/02/08, 17:00:20
Select single regresa un solo registro,

sera posible saber si es unico? sin tener que hacer un count(*) o algo por el estilo...

la pregunta es solo por eficiencia en el codigo, para no escribir mas codigo de lo debido...

yo imagino algo asi

sy-subrc 0 = 1 registro
sy-subrc 8 > 1 registros... algo loco por el estilo

Saludos.

abapconsultoria
11/02/08, 17:16:08
No, no existe. Con el select single que realice de prueba observa como lo tradujo la interfase de BD.


SELECT
/*+
FIRST_ROWS (1)
*/
*
FROM
"TADIR"
WHERE
ROWNUM <= :A0

Es decir el servidor siempre vaa devolver el primero y vos no vas a tener forma desde el R3 de saber cuantos habia en la BD. Vas a tener que utilizar la funcion de agregacion directamente.

Saludos.

aldape
11/02/08, 17:21:55
Muchas gracias!
En una chance, nos explicas como se hace la traduccion que hiciste...

Saludos

robert_milan
13/02/08, 14:41:42
un select single siempre te regresa un registro y siempre es el que encuentra primero con la coincidencia en el where.

por lo que si quieres saber cuantos registros extrae con la restriccion del where te sugiero que lo cambias a :

select count para saber si tienes mas de 2

abapconsultoria
13/02/08, 15:36:00
Lo que puse se obtiene de el traceo de una sentencia select en la trx ST05. Ahi podes ver la conversion que realiza la interfase de base de datos a SQL Nativo.

Saludos

willymj
11/09/08, 17:26:54
En Sql server los query para traer 10 registros es algo asi:

Select top 10 * From Tabla

en Abap eso mismo es igual a:

Select *
INTO TABLE tabla_interna
UP TO 20 ROWS
FROM but000

asi de simple.....

la gracia es el Up to traes 20 registros....

ibecerra
11/09/08, 21:52:51
quieres hacer un select count
facil
wcount type i
select count(*) into wcount from tabla where condiciones.