create PROCEDURE P_dataUpdate( @P_Location in CHAR{1000}, @P_AcctNum in CHAR{1000}, @P_UsrID IN CHAR{1000}, @P_SeqNum Numeric, @P_SegCnt Numeric) AS insert into openquery(ERSCACU, 'select * FROM CACSUSR.P325CCH') values (@P_Location, @P_AcctNum, @P_SeqNum, 0, ' ',convert(varchar,getdate(),12),left(replace(convert(varchar(12),getdate(),8),':',''),4),'IC','A','O',0,0,0,0,' ',' ',' ',@P_UsrID,' ',' ',' ',' ',' ',' '); update openquery(ERSCACU, 'select * from CACSUSR.P325PRI where LOCATION_CODE = ''@P_Location'' and ACCT_NUM = ''@P_AcctNum''') set LOW_CODED_HIST_SEQ= @P_SeqNum, CODED_HIST_SEG_CNT= @P_SegCnt;
프로시저 내용은 이렇구요.. 실행구문은
EXEC P_dataupdate '101010','111111','1234',9999,1
이런식으로 실행하게되는데 실행을 하면 Insert 값은 잘들어가는데 update 구문에서 업데이트되질 않습니다 ㅠㅠ
어떤것이 문제인거일까요..?
+ 가 안먹히네요.
파라미터를 오픈쿼리에 넘기려면 전체 쿼리(메인쿼리 + 오픈쿼리)를 변수에 담아 실행해야 하는가 봅니다.
메인쿼리 + 오픈쿼리 의 다단계 구조가 되어 따옴표 처리가 상당히 복잡해 지겠네요.
create PROCEDURE P_dataUpdate ( @P_Location IN VARCHAR{1000} -- char -> varchar , @P_AcctNum IN VARCHAR{1000} , @P_UsrID IN VARCHAR{1000} , @P_SeqNum Numeric , @P_SegCnt Numeric ) AS DECLARE @SQL VARCHAR(max) BEGIN insert into openquery(ERSCACU, 'select * FROM CACSUSR.P325CCH') values ( @P_Location, @P_AcctNum, @P_SeqNum, 0, ' ' , convert(varchar,getdate(),12) , left(replace(convert(varchar(12),getdate(),8),':',''),4) , 'IC','A','O',0,0,0,0,' ',' ',' ',@P_UsrID,' ',' ',' ',' ',' ',' ' ) ; SET @SQL = 'update openquery(ERSCACU, ' + '''select * from CACSUSR.P325PRI' + ' where LOCATION_CODE = ''''' + @P_Location + '''''' + ' and ACCT_NUM = ''''' + @P_AcctNum + ''''''')' + ' set LOW_CODED_HIST_SEQ= ' + CAST(@P_SeqNum AS VARCHAR) + ' , CODED_HIST_SEG_CNT= ' + CAST(@P_SegCnt AS VARCHAR) EXEC (@SQL) END