상황에 따라 일부 변수가있는 mysql 저장 프로 시저가있어서 루프에 실제로 필요한 변수 목록을 가져 오는 SELECT 기반의 값을 사용하고 싶습니다. (다른 변수에있는 변수의 이름 mysql
DECLARE var1 ;
DECLARE var2 ;
SELECT MyVar1,MyVar2 INTO var1,var2 FROM MyValues;
CURSOR curs FOR
SELECT varName FROM Mytable WHERE typeId = 1;
LOOP
FETCH curs INTO varName;
SELECT sqrt(varName.value); //Should be 1 because var1 =1;
END LOOP;
내가 세션 변수를 사용하지 않는 한 준비 기능을 불가능 할 것 같다 실제로 내가 동적으로 var1
및 var2
가 나타납니다 여기에
MyTable(varId, varName, typeId)
(0,var1,1)
(1,var2,2)
MyValues(MyVar1,MyVar2)
(1,2)
는 내가하고 싶은 것입니다 커스에서) 나는 그것을 가져올 수 없다. 세션 변수로 변환합니다.
아무도 내게이 문제를 해결하기위한 아이디어를 줄 수 있습니까? 고마워요!
내가 DB 내부 테이블에서 변수 이름을 얻을, 내가 응용 프로그램에서 아무것도 얻을 .. 내가 정말 분명하지 않다 생각 , 답변 주셔서 감사합니다 (그들을 선택 커서). "varName.Value"라고 쓰는 방법은 mysql이 varName의 값을 변수 이름으로 간주하도록하고 싶다는 사실을 표현하기위한 것이었다. 이 경우, 우리는 : 'varName = 'var1'; var1 = 1; 그리고 그리고 처리하고 싶습니다 : ''SELECT sqrt (var1); '에 해당하는''''''''''''''''''''''''''sqrt (1);''이 처리됩니다 : SELECT sqrt (varName);'SELECT sqrt ('var1');'(그것은 의미가 없습니다 ..). – Kruskaal
세션 변수에 대해서는 사용하고 싶지 않습니다. 단지 SP 변수에 액세스 할 수없는 준비된 명령문을 실행하는 것이므로 세션의 변수를 설정해야했습니다. 대신 좋은 버릇이 아니며 마침내 커서로 사용할 수 없습니다. – Kruskaal
안녕하세요 @ 진. 내 대답을 편집했습니다. –