문제

나는 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;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top