MySQL local variables

前端 未结 4 1969
失恋的感觉
失恋的感觉 2021-02-05 02:44

I am trying to define and initialize a MySQL variable for a query.

I have the following:

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


        
相关标签:
4条回答
  • 2021-02-05 03:31

    According to DECLARE Syntax, declare must be inside a begin...end block.

    0 讨论(0)
  • 2021-02-05 03:34

    MySQL has two different types of variable:

    • local variables (which are not prefixed by @) are strongly typed and scoped to the stored program block in which they are declared. Note that, as documented under DECLARE Syntax:

      DECLARE is permitted only inside a BEGIN ... END compound statement and must be at its start, before any other statements.

    • user variables (which are prefixed by @) are loosely typed and scoped to the session. Note that they neither need nor can be declared—just use them directly.

    Therefore, if you are defining a stored program and actually do want a "local variable", per the wording in your question, you will need to drop the @ character and ensure that your DECLARE statement is at the start of your program block. Otherwise, to use a "user variable", drop the DECLARE statement.

    Furthermore, you will either need to surround your query in parentheses in order to execute it as a subquery:

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

    Or else, you could use SELECT ... INTO:

    SELECT COUNT(*) INTO @countTotal FROM nGrams;
    
    0 讨论(0)
  • 2021-02-05 03:35

    Try this:-

     select @countTotal := COUNT(*) from nGrams;
    
    0 讨论(0)
  • 2021-02-05 03:42

    Function example:

    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 ;
    
    0 讨论(0)
提交回复
热议问题