MySQL varchar 변수 선언 및 사용
MySQL 5.0의 변수로 간단한 조작을 하려고 하는데 작동이 잘 안 됩니다.DELECORE/SET에 대한 여러 가지 구문을 보았습니다. 왜 그런지 모르겠습니다.어쨌든 제가 그들을 혼동하고 있는 것 같습니다./잘못 고른 것 같습니다./뒤죽박죽입니다.
실패하는 최소한의 단편은 다음과 같습니다.
DECLARE FOO varchar(7);
DECLARE oldFOO varchar(7);
SET FOO = '138';
SET oldFOO = CONCAT('0', FOO);
update mypermits
set person = FOO
where person = oldFOO;
저도 BEGIN으로 포장해봤어요.종료; 및 절차로서.이 경우 MySQL Workbench는 첫 번째 줄의 "') 근처의 SQL 구문 오류"와 두 번째 줄의 "DECLEAR oldFOO varchar(7) 근처의 SQL 구문 오류"를 유용하게 알려줍니다.그렇지 않으면 두 행을 모두 오류로 지정하고 "SQL 구문 오류 near..."를 입력합니다.
편집: 변수에 @s를 사용하거나 사용하지 않고 시도했다는 것을 언급하는 것을 잊었습니다.어떤 자원들은 그것을 가지고 있었고, 어떤 자원들은 그렇지 않았습니다.
내가 무슨 바보 같은 실수를 하고 있는 거지?
MySQL 5.1.35를 사용하는 데는 문제가 없습니다.
DELIMITER $$
DROP PROCEDURE IF EXISTS `example`.`test` $$
CREATE PROCEDURE `example`.`test` ()
BEGIN
DECLARE FOO varchar(7);
DECLARE oldFOO varchar(7);
SET FOO = '138';
SET oldFOO = CONCAT('0', FOO);
update mypermits
set person = FOO
where person = oldFOO;
END $$
DELIMITER ;
표:
DROP TABLE IF EXISTS `example`.`mypermits`;
CREATE TABLE `example`.`mypermits` (
`person` varchar(7) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO mypermits VALUES ('0138');
CALL test()
MySQL Workbench를 사용하면서 같은 문제가 발생했습니다.MySQL 문서에 따르면,DECLARE
"statement는 저장된 프로그램 내의 지역 변수를 선언합니다."이는 저장된 프로시저/기능과 함께 작동하는 것만 보장된다는 것을 의미합니다.
제가 해결할 수 있는 것은 단순히 그를 제거하는 것이었습니다.DECLARE
진술하고, 변수를 에 소개합니다.SET
진술.코드의 의미는 다음과 같습니다.
-- DECLARE FOO varchar(7);
-- DECLARE oldFOO varchar(7);
-- the @ symbol is required
SET @FOO = '138';
SET @oldFOO = CONCAT('0', FOO);
UPDATE mypermits SET person = FOO WHERE person = oldFOO;
변수 선언의 @를 잊어버린 것 같군요.그리고 나는 문제가 있었던 기억이 있습니다.SET
오래전 MySql에서.
해라
DECLARE @FOO varchar(7);
DECLARE @oldFOO varchar(7);
SELECT @FOO = '138';
SELECT @oldFOO = CONCAT('0', @FOO);
update mypermits
set person = @FOO
where person = @oldFOO;
시도해 보십시오.
declare @foo varchar(7),
@oldFoo varchar(7)
set @foo = '138'
set @oldFoo = '0' + @foo
Mysql에서는 아래와 같이 set command로 변수를 선언하여 사용할 수 있습니다.
mysql> set @foo="manjeet";
mysql> select * from table where name = @foo;
phpmyadmin을 사용하여 새로운 루틴을 추가하는 경우 BEGIN과 END 사이에 코드를 래핑하는 것을 잊지 마십시오.
Declare @variable type(size);
Set @variable = 'String' or Int ;
예:
Declare @id int;
set @id = 10;
Declare @str char(50);
set @str='Hello' ;
언급URL : https://stackoverflow.com/questions/3981432/declaring-and-using-mysql-varchar-variables
'programing' 카테고리의 다른 글
Excel에서 읽기(다차원 배열 범위) C# (0) | 2023.09.21 |
---|---|
대량 삽입 또는 최대 절전 모드로 업데이트하시겠습니까? (0) | 2023.09.16 |
glibc의 sscanf가 리눅스의 fscanf보다 매우 느린 이유는 무엇입니까? (0) | 2023.09.16 |
서비스를 시작하는 동안 오류가 발생했습니다.Oracle MTSRecovery Service를 찾을 수 없습니다. (0) | 2023.09.16 |
istringstream, ostringstream, stringstream의 차이점은 무엇입니까? / 모든 경우에 stringstream을 사용하면 어떨까요? (0) | 2023.09.16 |