source

Mariadb에서 변수 정의

nicesource 2023. 6. 18. 16:07
반응형

Mariadb에서 변수 정의

MariaDB version 10.3.22에서 사용자 정의 변수를 사용하기 위해 많은 방법을 시도했습니다. 응용 프로그램에서 사용하지 못한 후 다음과 같은 간단한 예를 사용하려고 했습니다.

DECLARE @EmpName1 NVARCHAR(50)
SET @EmpName1 = 'Ali'
PRINT @EmpName1 

인식할 수 없는 문 유형을 제공합니다.(위치 0의 "DELLARE" 근처)

좀 더 자세히 살펴본 후 구분 기호와 생성된 함수 사이에서 사용해 보았습니다.

DELIMITER //
CREATE FUNCTION test
DECLARE @EmpName1 VARCHAR(50)
SET @EmpName1 = 'Ali'
PRINT @EmpName1 
END //
DELIMITER;

이것이 주는

  1. 인식할 수 없는 데이터 형식입니다.(위치 54에서 "" 근처)
  2. "RETURN" 키워드가 필요합니다.(위치 110의 "끝" 근처)

MariaDB 문서의 구문이 제가 볼 수 있는 한 동일하기 때문에 문제가 어디서 발생했는지 알 수 없습니다.

누가 이 문제를 해결하는 것을 도와줄 수 있습니까?제 최종 목표는 쿼리의 단일 결과를 문자열로 변수에 할당하는 것입니다.

몇 가지 구문이 중요합니다.

  1. 니드 a()파라미터를 사용하지 않는 경우에도 함수 이름 뒤에 설정됩니다.

    CREATE FUNCTION test()
    
  2. 함수의 반환 데이터 유형은 다음과 같이 지정해야 합니다. (사용자 변수와 동일한 유형/크기를 사용했습니다.)물론 반환되는 항목에 따라 다른 유형일 수 있습니다.)

    CREATE FUNCTION test() returns varchar(50)
    
  3. 의 사용@변수가 필요하지 않고 누락된 경우;각 줄의 끝에, 더하기PRINT유효하지 않습니다.

    DECLARE EmpName1 VARCHAR(50);
    SET EmpName1 = 'Ali';
    -- PRINT EmpName1; see item 4
    
  4. 함수는 다음 값을 반환해야 합니다.

    RETURN EmpName1; -- I simply replaced the PRINT with RETURN here.
    

이 모든 것을 종합하면, 완전한 정의는 다음과 같습니다.

DELIMITER //

CREATE FUNCTION test() RETURNS VARCHAR(50)
BEGIN
    DECLARE EmpName1 VARCHAR(50) DEFAULT '';
    SET EmpName1 = 'Ali';
    RETURN EmpName1;
END //

DELIMITER ;

그런 다음 생성된 후 다음 기능을 사용합니다.

SELECT test();

교호작용 예제:

root@localhost(test) DELIMITER //
    ->     CREATE FUNCTION test() RETURNS VARCHAR(50)
    ->     BEGIN
    ->         DECLARE EmpName1 VARCHAR(50);
    ->         SET EmpName1 = 'Ali';
    ->         RETURN EmpName1;
    ->     END //
Query OK, 0 rows affected (0.07 sec)

root@localhost(test)
root@localhost(test)  DELIMITER ;

root@localhost(test) select test();
+--------+
| test() |
+--------+
| Ali    |
+--------+
1 row in set (0.09 sec)

웹 사이트에서 사용하지 않지만DELIMITER또한 이 DB Fidle에서 작동 중인 상태를 확인할 수 있습니다.

언급URL : https://stackoverflow.com/questions/70021150/defining-variable-in-mariadb

반응형