CI 묻고 답하기

제목 ci3 mssql 프로시저 output 출력 도움요청합니다~
카테고리 CI 2, 3
글쓴이 터치맨 작성시각 2020/09/17 16:10:49
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 10645   RSS

mssql 프로시저 연동중 output 인자값을 어떻게 입력해야 하는지 도움 요청 드려요~

 

1. 인자값이 input 하나일때는 정상적으로 작동합니다. 

$data["as_styl"] = "123";

model

$sql = ("EXEC UP_MALL ?");

$query = $this->erp->query($sql, $data);

return $query->result_array();

 

2. 인자값에 input output 요두 있을경우 데이터가 안나옵니다.

$data = [];

$data["as_name"] = "가나다";   #input 

$data["as_cuno"] = "";            #output

model 

$sql = ("EXEC UP_MEMBER_CHECK ?, ?");

$query = $this->erp->query($sql, $data);

return $query->row();

 

 

 다음글 sess_time_to_update 설정에 대해 질문드... (4)
 이전글 ci4 에서 $builder->countAllRe... (4)

댓글

변종원(웅파) / 2020/09/17 16:24:29 / 추천 1

$data["as_cuno"] = "" 빈값이고 같은 $data 배열로 넘어가서 조건에 반영된건 아닌가요?

결과는 $query->row() 이걸로 받고 있는데요?

터치맨 / 2020/09/17 16:32:40 / 추천 0

답변감사합니다.

as_cuno 값이 없으면 아래와 같이 오류가 발생하고 있습니다. 그래서 OUTPUT 인자값을 추가 하였습니다.

프로시저 또는 함수 'UP_MEMBER_CHECK '에 매개 변수 '@as_cuno'이(가) 필요하지만 제공되지 않았습니다.

 

MSSQL 에서도 아래와 같이 사용하여 정상 작동하였습니다.

EXEC @return_value = [dbo].[UP_MEMBER_CHECK ]
@as_name = N'가나다',
@as_cuno = @as_cuno OUTPUT
 
SELECT @as_cuno as N'@as_cuno',
@as_cdno as N'@as_cdno'

 

 

한대승(불의회상) / 2020/09/17 18:53:02 / 추천 0

일단 아래처럼 해보세요.

$sql = ("EXEC @return_value = [dbo].[UP_MEMBER_CHECK ]
@as_name = N'가나다',
@as_cuno = @as_cuno OUTPUT
 
SELECT @as_cuno as N'@as_cuno', @as_cdno as N'@as_cdno'
");

$query = $this->erp->query($sql);

return $query->row();

결과는 알려주세요.

터치맨 / 2020/09/18 09:19:51 / 추천 0

답변감사합니다. 

테스트 결과 스칼라 변수 오류가 나와서 DECLARE @return_value int, @as_cuno nvarchar(20) 추가후 

데이터 정상적으로 나오는걸 확인했습니다. 

아래와 같은 방법만 가능한것인가요?  $query = $this->erp->query($sql, $data); 배열을 사용할순 없는지 궁금합니다.

또, 서버가 php7.1 이라 sqlsrv 설정해서 사용하고 있습니다. 

DECLARE @return_value int,
@as_cuno nvarchar(20)

EXEC [dbo].[UP_MEMBER_CHECK]
@as_name = N'조용훈',
@as_cuno = @as_cuno OUTPUT

SELECT @as_cuno as N'@as_cuno',
@as_cdno as N'@as_cdno'

 
한대승(불의회상) / 2020/09/18 12:28:36 / 추천 0

@터치맨 특정DB에서만 동작하는 특별한 쿼리를 굳이 배열에 담아 사용할 필요는 없습니다.

쿼리빌더는 범용쿼리에 사용하도록 설계되어 있어 사용 DB에 맞추어 그때그때 유연하게 적용하는게 좋습니다.