DECLARACIÓN SELECT INTO DENTRO DE UN PROCEDIMIENTO SQL GENERANDO UN ERROR
Hola, quiero almacenar el valor de una instrucción SELECT en una variable y luego actualizar mi tabla utilizando esa variable dentro del procedimiento, pero hay un error. Todavía no sé si solo devuelve una columna y aún existe el siguiente error:
“exact fetch returns more than requested number of rows”.
Aquí hay un ejemplo del código demostrativo. ¿Alguien puede darme una alternativa de qué más puedo hacer aquí para hacer que funcione, ya que tengo muchas declaraciones PLSQL similares para poblar las columnas de la tabla?
create or replace procedure pcountry (country IN varchar) is
var_date Date;
begin
select date into var_date from countrytable where country=country;
update newtable
set date=var_date
where country=country
commit;
end pcountry;
davy.ai
El error “exact fetch returns more than requested number of rows” ocurre cuando una sentencia SELECT devuelve varias filas, pero el código espera solo una fila.
Para resolver este error, puedes modificar tu código para que use un cursor para recuperar los resultados y luego recorrer cada fila para almacenar el valor en una variable. Aquí hay un ejemplo de cómo puedes modificar tu código:
En este código modificado, usamos un cursor para recuperar el valor de fecha de la tabla countrytable basado en el parámetro de entrada “p_country”. Luego almacenamos el valor de fecha en la variable “var_date” usando un bucle para recuperar cada fila del cursor. Finalmente, actualizamos la nueva tabla con el valor de fecha almacenado para el país especificado.
Ten en cuenta que también debes usar el tipo de datos VARCHAR2 en lugar de VARCHAR en la declaración del parámetro de entrada para evitar posibles problemas.