안녕하세요.
프로시저 안에서 특정 프로시저를 호출하여 그 결과값을 활용하여 최종 리턴을 돌려주려고 합니다.
예를 들면 현재 데이터베이스가 저장된 mdf파일의 드라이브 문자열을 가져오기 위해
sp_helpdb '데이터베이스이름' 명령어를 호출하면 결과 테이블이 두개로 반환됩니다.
결과 테이블 중 두번째에 mdf 파일의 경로가 나와있기에 두번째 테이블의 값을 가져와서 사용하고 싶은데요.
제가 작성한 프로시저 안에서 위의 sp_helpdb 명령어를 사용해서 결과를 받아서 두번째 결과테이블의 값을 사용하고 싶은데
프로시저 호출하여 스칼라 값이나 하나의 테이블을 받아서 처리하는 방법은 많은데 다중 테이블이 결과값으로 올때는
어떤 방법으로 받아야 하는지 모르겠습니다.
고수님들의 조언 부탁드립니다.
Comment 4
-
지영아빠
2023.03.16 15:29
-
AceCarrot
2023.03.28 11:28
답변 감사합니다.
그 이후로도 찾아보긴 하였으나 딱히 뾰족한 방법은 없는것 같더라고요.
원하는 결과는 해결했지만 근본적인 멀티 테이블 반환을 받아서 처리하는 방법은 좀더 알아봐야겠습니다.
-
두둥탁탁
2023.03.17 10:25
결국 원하시는 결과가 mdf파일들의 드라이브 문자열을 가져오기 위한거라면 해당 결과를 가지고 있는 sys 테이블이나 dmv 같은 것들 뒤져보시는 것도 좋을 것 같습니다.
mdf 파일 드라이브 문자열 가지고 오시려면 sys.master_files 테이블의 left(s.physical_name, 1) 같은 형태로 가지고 와도 되겠네요.
-
AceCarrot
2023.03.28 11:29
답변 감사합니다~!!!
네 우선은 말씀하신 방법으로 해결하긴 하였습니다.
근본적인 멀티테이블 결과를 받아서 처리하는 방법은 아직 찾지 못했네요.
program에서는 nextrecodeset같은게 있지만, procedure에서는 그런 문법을 보지 못했던 것 같습니다.
하려고 한다면 procedure의 소스를 분석해서 원하는 부분을 Carrot님의 Procedure에 가져와야 하지 않을까 싶습니다.
또 다른 방법은 mars(multi active resultset)를 연계하는 clr, extent 개발인데요. <- 이건 너무 프로그램 스럽지 않을까 싶습니다.