programing

MySQL에서 문자열을 실행할 수 있습니까?

easyjava 2023. 9. 6. 23:03
반응형

MySQL에서 문자열을 실행할 수 있습니까?

나는 a를 통과하는 MSSQL 저장 프로시저를 변환해야 합니다.varchar다음과 같은 질문:

INSERT INTO Results
  EXEC (@Expresion);

이거 안 돼요.저는 그것을 꽤 확신합니다.EXEC그리고.EXECUTEMySQL 명령어는 아니지만,CALL역시 안 통합니다.

자바스크립트 같은 것이 가능한지 아는 사람?evalMySQL의 기능?

이런 걸 찾으시는 것 같네요

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 ... FROMstatement wants session variable(세션 변수와 혼합됨)@). 만약 당신이 정상 변수를 통과하려고 한다면, 그것은 공중으로 손을 던질 것이고 그것은 단지 신경쓰지 않을 것입니다.

EXECUTE는 MySQL에서 유효한 명령입니다.MySQL 참조 설명서

MySQL 명령은 준비된 하나의 문에만 사용할 수 있습니다.

문자열에서 여러 개의 쿼리를 실행하려는 경우 파일에 저장하고 소스화하는 것을 고려합니다.

SET @query = 'SELECT 1; SELECT 2; SELECT 3;';
SELECT @query INTO OUTFILE '/tmp/temp.sql';
SOURCE /tmp/temp.sql;

언급URL : https://stackoverflow.com/questions/999200/is-it-possible-to-execute-a-string-in-mysql

반응형