반응형
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;
이것이 주는
- 인식할 수 없는 데이터 형식입니다.(위치 54에서 "" 근처)
- "RETURN" 키워드가 필요합니다.(위치 110의 "끝" 근처)
MariaDB 문서의 구문이 제가 볼 수 있는 한 동일하기 때문에 문제가 어디서 발생했는지 알 수 없습니다.
누가 이 문제를 해결하는 것을 도와줄 수 있습니까?제 최종 목표는 쿼리의 단일 결과를 문자열로 변수에 할당하는 것입니다.
몇 가지 구문이 중요합니다.
니드 a
()
파라미터를 사용하지 않는 경우에도 함수 이름 뒤에 설정됩니다.CREATE FUNCTION test()
함수의 반환 데이터 유형은 다음과 같이 지정해야 합니다. (사용자 변수와 동일한 유형/크기를 사용했습니다.)물론 반환되는 항목에 따라 다른 유형일 수 있습니다.)
CREATE FUNCTION test() returns varchar(50)
의 사용
@
변수가 필요하지 않고 누락된 경우;
각 줄의 끝에, 더하기PRINT
유효하지 않습니다.DECLARE EmpName1 VARCHAR(50); SET EmpName1 = 'Ali'; -- PRINT EmpName1; see item 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
반응형
'source' 카테고리의 다른 글
세트를 사용하는 이유.종자 함수 (0) | 2023.06.18 |
---|---|
Angular 9에서 유형 스크립트를 사용하여 관찰자 크기 조정 찾기 (0) | 2023.06.18 |
플로트에 대한 범위(범위) (0) | 2023.06.18 |
어떻게 모든 깃 커밋을 하나로 뭉치나요? (0) | 2023.06.18 |
C# 및 익명 객체 배열 (0) | 2023.06.18 |