MySQL에서 문자열을 실행할 수 있습니까?
-
14-09-2019 - |
문제
나는 MSSQL 저장된 Proc를 전환해야한다. varchar
그것은 쿼리입니다 :
INSERT INTO Results
EXEC (@Expresion);
이것은 작동하지 않습니다. 나는 그것을 확신한다 EXEC
그리고 EXECUTE
MySQL 명령은 아니지만 CALL
작동하지 않습니다.
JavaScript와 같은 것을 가질 수 있는지 아는 사람이 있습니까? eval
MySQL의 기능?
해결책
Execute는 MySQL에서 유효한 명령입니다. MySQL 참조 매뉴얼
다른 팁
나는 당신이 다음과 같은 것을 찾고 있다고 생각합니다.
SET @queryString = (
SELECT CONCAT('INSERT INTO user_group (`group_id`,`user_id`) VALUES ', www.vals) as res FROM (
SELECT GROUP_CONCAT(qwe.asd SEPARATOR ',') as vals FROM (
SELECT CONCAT('(59,', user_id, ')') as asd FROM access WHERE residency = 9
) as qwe
) as www
);
PREPARE stmt FROM @queryString;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @asd = NULL;
이것은 SQL에 해당합니다 eval(my_string);
:
@Expression = 'SELECT "Hello, World!";';
PREPARE myquery FROM @Expression;
EXECUTE myquery;
기본적으로 나는 기존 답변을 결합했지만 정확하게 평가하는 방법을 알려주지 않습니다.
매개 변수를 추가하려면 다음을 사용할 수 있습니다.
@username = "test";
@password = "asdf";
@Expression = 'SELECT id FROM Users WHERE name = ? AND pass = ?;'
PREPARE myquery FROM @Expression;
EXECUTE myquery USING @username, @password;
원래 질문에 정확히 답변하려면 다음과 같습니다.
@Expression = 'SELECT "Hello, World!";'
PREPARE myquery FROM @Expression;
INSERT INTO Results
EXECUTE myquery;
주목하십시오 PREPARE ... FROM
명령문은 세션 변수를 원합니다 (접두사가 있습니다 @
). 정상적인 변수를 통과하려고하면 공중에 손을 던지고 신경 쓰지 않을 것입니다.
그만큼 EXECUTE
MySQL 명령은 하나의 준비된 명령문에만 사용할 수 있습니다.
문자열에서 여러 쿼리를 실행하려는 경우, 파일에 저장하고 소스를 고려하십시오.
SET @query = 'SELECT 1; SELECT 2; SELECT 3;';
SELECT @query INTO OUTFILE '/tmp/temp.sql';
SOURCE /tmp/temp.sql;
제휴하지 않습니다 StackOverflow