variable stored query locales declarar mysql variables set local declare

stored - Variables locales de MySQL



variables locales en mysql (4)

Estoy tratando de definir e inicializar una variable MySQL para una consulta.

Tengo los siguientes

declare @countTotal int; SET @countTotal = select COUNT(*) from nGrams;

Estoy usando MySQL en Netbeans y me dice que tengo un error. ¿Qué / dónde está mi error?

¿Cómo puedo arreglar esto?


De acuerdo con la sintaxis DECLARE , declare debe estar dentro de un bloque begin ... end.


Ejemplo de función:

DROP FUNCTION IF EXISTS test; DELIMITER $$ CREATE FUNCTION test(in_number INT) RETURNS INT BEGIN DECLARE countTotal INT; SET countTotal = SELECT COUNT(*) FROM nGrams; RETURN countTotal + in_number; END $$ DELIMITER ;


MySQL tiene dos tipos diferentes de variable:

  • las variables locales (que no tienen el prefijo @ ) se escriben y se restringen fuertemente al bloque de programa almacenado en el que se declaran. Tenga en cuenta que, como se documenta en la sintaxis DECLARE :

    DECLARE está permitido solo dentro de una declaración compuesta BEGIN ... END y debe estar al comienzo, antes de cualquier otra declaración.

  • las variables de usuario (que son prefijadas por @ ) se escriben y se ajustan a la sesión. Tenga en cuenta que ni necesitan ni pueden ser declarados, simplemente utilícelos directamente.

Por lo tanto, si está definiendo un programa almacenado y realmente desea una "variable local", de acuerdo con la redacción de su pregunta, deberá eliminar el carácter @ y asegurarse de que su declaración DECLARE esté al comienzo de su bloque de programa. De lo contrario, para utilizar una "variable de usuario", elimine la sentencia DECLARE .

Además, tendrá que rodear su consulta entre paréntesis para ejecutarla como una subconsulta:

SET @countTotal = (SELECT COUNT(*) FROM nGrams);

O bien, podrías usar SELECT ... INTO :

SELECT COUNT(*) INTO @countTotal FROM nGrams;


Prueba esto:-

select @countTotal := COUNT(*) from nGrams;