쿼리 용 MySQL 변수를 정의하고 초기화하려고합니다.MySQL 로컬 변수
나는 다음이 : 내가 넷빈즈에서 MySQL을 사용하고
declare @countTotal int;
SET @countTotal = select COUNT(*)
from nGrams;
그리고 내가 오류를 알려줍니다. 어디서/내 오류가 무엇입니까?
어떻게 해결할 수 있습니까?
쿼리 용 MySQL 변수를 정의하고 초기화하려고합니다.MySQL 로컬 변수
나는 다음이 : 내가 넷빈즈에서 MySQL을 사용하고
declare @countTotal int;
SET @countTotal = select COUNT(*)
from nGrams;
그리고 내가 오류를 알려줍니다. 어디서/내 오류가 무엇입니까?
어떻게 해결할 수 있습니까?
MySQL이 변수의 두 가지 종류가 있습니다
로컬 변수 (는이되지 않은 접두사가인)은 강하게 입력되고 범위가 선언 된 저장된 프로그램 블록으로 범위가 지정됩니다. DECLARE
Syntax 아래에 설명 된대로, 그 주 :
DECLARE
만BEGIN ... END
복합 명령문 내에서 허용되며 다른 문 전에, 그 시작해야합니다.
user variables은 (는 @
접두사있는) 느슨한 타입 세션 범위에있다. 그것들은 단지 —을 필요로하지도 않고 선언 할 수도 없다. 당신이 당신의 문제의 문구 당, "로컬 변수를"원하는가 실제로 저장된 프로그램을 정의하고있는 경우
따라서, 당신은 @
문자를 삭제해야하고 DECLARE
문이에 있는지 확인합니다 프로그램 블록의 시작. 그렇지 않으면 "사용자 변수"를 사용하려면 DECLARE
문을 입력하십시오.
또한, 하위 쿼리로 실행하기 위해 괄호 쿼리를 둘러싸고해야합니다 중 하나 DECLARE Syntax에 따르면
SELECT COUNT(*) INTO @countTotal FROM nGrams;
이 시도 -
select @countTotal := COUNT(*) from nGrams;
기능 예 :
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 ;
이상하게 나에게주는 것입니다. 만약 내가 선택 * 나는 약 100,000 행을 얻을 ... – CodeKingPlusPlus
함수 또는 프로 시저를 만드는거야? – alditis
[하위 쿼리는 항상 괄호 안에 나타나야합니다.] (https://dev.mysql.com/doc/en/subqueries.html) – eggyal
:
SET @countTotal = (SELECT COUNT(*) FROM nGrams);
아니면, 당신은 SELECT ... INTO
사용할 수 있습니다 declare
은 시작 ... 끝 블록 안에 있어야합니다.
아마 [': ='할당 연산자] (http://dev.mysql.com/doc/en/assignment-operators.html#operator_assign-value) = '동등 연산자'(http://dev.mysql.com/doc/en/comparison-operators.html#operator_equal)? – eggyal
그 중요한 업데이 트를 주셔서 감사합니다 @ egyal –