제목 | 저장 프로시저(stored procedure) 연동 질문 입니다. 도와 주세요!!! | ||
---|---|---|---|
글쓴이 | 든이제 | 작성시각 | 2013/10/11 08:57:30 |
|
|||
안녕하세요. CI에 입문 한지 벌써 1년이 다 되어 가네요. 요즘 제가 CI에서 저장 프로시저를 콜 하는 작업을 하고 있는데요...뭐가 문젠지 계속 에러가 나네요... 구글링을 해 봐도 짐작이 안가네요... 그런데 이상한건 에러가 나는데...저장 프로시저안의 쿼리들은 작동을 한다는 겁니다... 아래에 코드를 공유 할테니 고수님들 제발 도와 주세요...부탁 드립니다... 참고로 저는 지금 sqlsrv드라이버를 이용하여 db에 접속합니다. ************************************ 컨트롤러**************************************** public function sp_test() {
$Prod_ID = '1018707';
$sql = "EXECUTE dbo.SFS_SP_transaction @code = ?";
$this->db->query($sql, array($Prod_ID));
}
********************************** 저장 프로시저**************************************************************************************************************************** USE [PoMgmt_TEST]
GO
/****** Object: StoredProcedure [dbo].[SFS_SP_transaction] Script Date: 10/10/2013 10:44:37 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[SFS_SP_transaction]
@code nvarchar(20)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
update TB_po_west set CANCELED = 'A' where Prod_ID = @code
exec [dbo].[SFS_SP_transaction]
END
위의 업데이트 쿼리는 작동을 합니다....그런데 아래의 문구는 계속 나오네요....ㅜ.ㅜ ***************************************************************************************
************************************에러 문구**************************************** Error Number: 42000 [Microsoft][SQL Server Native Client 10.0][SQL Server]Procedure or function 'SFS_SP_transaction' expects parameter '@code', which was not supplied. EXECUTE dbo.SFS_SP_transaction @code = '1018707' Filename: D:\Sempio Web System\Test Server\system\database\DB_driver.php Line Number: 330 |
|||
다음글 | 모델을 어떻게 사용해야 하나요? (3) | ||
이전글 | mysql에서 두개의 database를 사용할때 (3) | ||
한대승(불의회상)
/
2013/10/11 09:08:32 /
추천
0
sql client 에서 아래처럼 저장 프로시저를 직접 호출 한 경우는 어떤결과가 나오나요?
|
든이제
/
2013/10/11 09:36:31 /
추천
0
public function sp_test() {
$sql = "EXECUTE dbo.SFS_SP_transaction @code"; $this->db->query($sql); }
이렇게 콘트롤러에 하고 아래와 같이 BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; update TB_po_west set CANCELED = 'A' where Prod_ID = @code exec [dbo].[SFS_SP_transaction] @code = '1018707' END 이렇게 하면 Error Number: 42000 [Microsoft][SQL Server Native Client 10.0][SQL Server]Must declare the scalar variable "@code". EXECUTE dbo.SFS_SP_transaction @code Filename: D:\Sempio Web System\Test Server\system\database\DB_driver.php Line Number: 330 |
들국화
/
2013/10/11 14:13:40 /
추천
0
$sql = "dbo.SFS_SP_transaction @code = ?";EXEC 를 제거하라는 말이 있네요... 테스트를 못해봐서.. ^^ |
milosz
/
2013/10/11 16:03:41 /
추천
0
지금 에러메시지 보시면 스칼라값이 아니라서 나타나는 에러로 보이네요.
@code는 nvachar로 선언되어 있는데 Prod_ID와 타입이 맞는지 확인해보셔야 할 것 같네요. sqlsrv가 타입에 민감하게 반응했던 기억이 있어서.. 한번 확인 ㅎ |
letsgolee
/
2013/10/11 18:10:55 /
추천
0
procedure를 한번도 해보지는 않았지만 잠깐 예제를 살펴보니 다음과 같아야 하지 않을까요?
public function sp_test() { $Prod_ID = '1018707'; $sql = "EXECUTE dbo.SFS_SP_transaction ?"; $this->db->query($sql, array($Prod_ID)); }프로시져 명 다음에 변수가 들어가야 하니까 바로 프로시져 명 뒤에 '?'를 붙이면 될 것 같네요. 프로시져는 원래대로 작성하구요. |