programing

마리아에서 선택문 내에 저장 프로시저를 호출할 수 있습니까?DB

muds 2023. 9. 14. 00:03
반응형

마리아에서 선택문 내에 저장 프로시저를 호출할 수 있습니까?DB

MariaDB에서는 다음과 같이 SELECT 문 내에서 저장 프로시저를 호출하고자 합니다.

    SELECT 
      CALL GetInfoForOneRow(hdp.p00) 
    FROM historydataprofile hdp 
    WHERE hdp.id IN ( 1, 22, 333)

저장 프로시저를 1, 22, 333 값별로 한 번씩 호출하고 싶습니다.두 개 이상의 열을 반환하지만 행은 하나만 반환합니다.

이게 가능할까요?대신 기능으로 가능할까요?함수로 시도해 보았지만 함수로서 운이 없으면 여러 개의 값을 반환할 수 없습니다.커서로 가능할까요?

Edit So my problem은 큰 맥락에서 역방향 피벗을 수행해야 한다는 점입니다. 즉, 하나의 행(열이 많은)으로 저장된 데이터에서 "키 값 쌍"(열이 많은) 형식의 결과 집합을 생성해야 한다는 입니다.

그래서 제가 원하는 호출 코드는 다음과 같습니다.

SELECT GetInfoForOneRow(hdp.p00) FROM scc_historydataprofile hdp WHERE hdp.id = 1 
  UNION ALL
SELECT GetInfoForOneRow(hdp.p01) FROM scc_historydataprofile hdp WHERE hdp.id = 1 
  UNION ALL
SELECT GetInfoForOneRow(hdp.p02) FROM scc_historydataprofile hdp WHERE hdp.id = 1 
  UNION ALL
SELECT GetInfoForOneRow(hdp.p03) FROM scc_historydataprofile hdp WHERE hdp.id = 
...
  UNION ALL
SELECT GetInfoForOneRow(hdp.p99) FROM scc_historydataprofile hdp WHERE hdp.id = 1 

그러나 나는 이제 위의 코드를 작동시키는 데 필요한 함수나 프로시저가 복수의 열을 반환하지 않는 것이 불가능하다는 것을 깨달았습니다.이 문제를 해결하기 위해 제 쿼리 구조를 다시 살펴봐야 할 것 같습니다.

필요하다면 새로운 질문을 올리겠습니다.

MariaDB에서 select 문 내에 저장 프로시저를 호출할 수 있습니까?

아니요, 당신이 원하는 대로는 아닙니다.

저장된 함수를 사용합니다.

또는 저장 프로시저를 작성하여 원하는 전체 결과 세트(예시의 SELECT 문 결과)를 반환합니다.

언급URL : https://stackoverflow.com/questions/57924592/can-you-call-a-stored-procedure-within-a-select-statement-in-mariadb

반응형