Warning: Setting user variables within expressions is deprecated
Hola buenas,
Utilizo el siguiente código para extraer los registros de una tabla simple, tipo cuenta bancaria en MySQL y arrastro el saldo mediante la variable @isaldo, lo cual me funciona perfectamente.
Sin embargo ahora MySQL me devuelve el siguiente mensaje de aviso: Setting user variables within expressions is deprecated and will be removed in a future release. Consider alternatives: 'SET variable=expression, ...', or 'SELECT expression(s) INTO variables(s)'. SQL.sql 1 17 Sabeis como podria actualizar este código para evitar problemas en futuras versiones de la BD. Actualmente utilizo la version MySQL 8.0.30 Gracias y saludos. |
|
Si, ya entiendo lo que dice el Warning pero como se desarrolla? porque así tal cual no funciona ya que ahí no se indica de que tabla se extraen entrada o salida etc. |
|
Cita:
@isaldo debea tener un valor diferente, el saldo de la cuenta, en cada fila tal como devuelve el codigo que uso ahora y que lanza el Warning y esto es lo que no sé implementar con SELECT ... INTO .... Gracias |
|
Entonces no has hecho la pregunta correcta, porque ese enlace no habla nada de almacenar valor en variable.
|
Cita:
En resumen, si quieres asignar una variable desde una consulta, el resultado debe ser de una fila. Alternativamente deberías usar cursores, para ir recorriendo el resultado y aplicando tu lógica a cada registro. Cita:
Saludos. |
Expongo un código que me da un Warning y pido una solución para ese codigo sin utilizar variables incluidas en las expresiones para evitar el warning. Me respondeis con lo de que el mismo mensaje te da la solución o bien poneis código que es erroneo como el tuyo Casimiro.
Encuentro en Stackoverflow una solución para mi código que como dije en la pregunta sirve para "extraer los registros de una tabla simple, tipo cuenta bancaria en MySQL arrastrando el saldo mediante la variable @isaldo" que, creo que no es dificil de entender. En el enlace aparece un código que hace exactamente eso: extraer datos de una tabla arrastrando el saldo sin utilizar variables y lo comparto con vosotros. |
Cita:
La solución que pones y la pregunta inicial, dan resultados muy distintos, según el resultado en el mismo sitio que nos has compartido: https://dbfiddle.uk/JtNBNuKa OVER PARTITION agrupa, en cambio el código original acumula. PD: Todos los que colaboran en el foro, invierten su tiempo desinteresadamente para ayudar al resto, si varios usuarios no comprendimos tu problema, o bien si es difícil de comprender, o no te has explicado del todo bien o simplemente no entendemos de la materia. Saludos. |
Cita:
|
Muchas gracias a los dos por vuestra ayuda.
Yo, más allá de si he hecho la pregunta 100% correcta, intentaba compartir un código que soluciona mi problema. En cuanto al código de Casimiro, por supuesto que es un metacodigo y por supuesto que lo he adaptado a mis tablas / estructura pero repito, si ejecutas este código derivado de tu metacodigo:
Devuelve este error: Result consisted of more than one row. Solo estoy informando de este punto. Repito, muchas gracias |
No hay problema, nos alegra de que lo hayas solucionado ^\||/
|
La franja horaria es GMT +2. Ahora son las 07:59:26. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi