2014-03-19 3 views
0

저장 프로 시저를 사용하고 있습니다.MySQl 저장 프로 시저 전달 매개 변수 이름 및 값을 가진 매개 변수

create procedure uspCommonMasterInsertUpdateSingleItem 
(
    p_id int, 
    p_name varchar(50), 
    p_head int, 
    p_desc varchar(500), 
    p_ct_nm varchar(50) 
) 
begin 
    declare p_returnvalue int; 
    declare p_ct_cd int ; 
    set p_ct_cd = (select ct_cd from com_typ where ct_nm = p_ct_nm); 

    if (p_id is null) then 
     insert into com_mst(
      ct_cd, 
      cm_nm, 
      cm_hed, 
      cm_dsg 
     ) 
     values 
     (
      p_ct_cd, 
      p_name, 
      p_head, 
      p_desc 
     ) ; 
     select p_returnvalue = LAST_INSERT_ID(); 
    else 
     update com_mst set 
      ct_cd=p_ct_cd, 
      cm_nm=p_name, 
      cm_hed =p_head, 
      cm_dsg = p_dsg 
     where cm_cd = p_id ; 
     select p_returnvalue = p_id; 
    end if ; 
end 

나는이

call uspCommonMasterInsertUpdateSingleItem (p_name := 'kk',p_head := '1',p_desc := 'des',p_ct_nm := 'Department') 

을 실행하고 때 오류

ERROR 1064 (42000)를 표시한다 : 당신은 당신의 SQL 구문에 오류가 있습니다;를 '='1 ', p_desc : ='des ', p_ct_nm : ='Department ')' '근처에서': = 'k = 012'를 사용할 수 있도록 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. 라인 1

+0

실행하는 동안 매개 변수를 지정하는 대신 매개 변수 만 전달하십시오. – Pravellika

+0

ID 매개 변수가 과거가 아님, 전화가 p_name – StanislavL

답변

1

다만 또한 상기 호출 방법의 첫번째 파라미터로서 "p_id"의 ​​값을 건네주십시오

call uspCommonMasterInsertUpdateSingleItem ('kk',1,'des','Department') 

call uspCommonMasterInsertUpdateSingleItem (p_name := 'kk',p_head := '1',p_desc := 'des',p_ct_nm := 'Department') 

에서 통화 방법을 변경

,617,
+0

에서 시작됩니다. 귀하의 회사 bhubeneswar에 대해 알고 있습니다. 답변 주셔서 감사하지만 그건 내가 원했던 것이 아니며, 나는 sp에서 5 개의 매개 변수를 갖고 있고 usp *에서 4 개의 매개 변수 만 전달하려고합니다. – Nisar

+0

나는 p_id를 넘겨주고 싶지 않다. plz는 다른 조건이 있으면 보아라.이 sp는 두 개의 연산에 사용된다. 하나는 저장을위한 것이고 다른 하나는 편집을위한 것이다. – Nisar

+2

p_id를 넘기고 싶지 않으면, 그 값은 null입니다. 첫 번째 매개 변수는 "uspCommonMasterInsertUpdateSingleItem ('', 'kk', 1, 'des', 'Department') 호출을 전달해야합니다. if 및 else 조건을 확인하고 under 문에있는 코드에서 작업합니다. 그리고 p_id에 전달할 값입니다. NULL 값 대신에 값을 전달하십시오 "call uspCommonMasterInsertUpdateSingleItem (123, 'kk', 1, 'des', 'Department')". – Andolasoft

0

proc에 주어진 순서대로 매개 변수를 지정하십시오. 실행 중에 p_id를 생략했습니다.

관련 문제