2017-05-05 7 views
1

Dto를 매개 변수로 전달하고 jdbc.js에서 저장 프로 시저를 호출하려고합니다. 그렇게 할 수 있습니까?HOW TO 객체 목록 (DTO)을 저장 프로 시저에 단일 IN 매개 변수로 사용

매개 변수를 설정하는 대신 paratmeters에서와 마찬가지로 저장 프로 시저를 호출하고 싶습니다. 매개 변수가 많기 때문에 매개 변수가 많이 있습니다.

+0

글쎄, 일반적으로이 XML/JSON (extractValue와/JSON_EXTRACT) – Alexey

답변

4

현재 MySQL 저장 프로 시저 및 함수에서 객체를 전달 (또는 반환) 할 방법이 없습니다.

그러나 MySQL 5.7에는 JSON 함수가 있으므로 varchar 매개 변수를 전달하고 JSON_EXTRACT 함수를 사용하여 값을 추출 할 수 있습니다.

매뉴얼의 MySQL 5.7를 참조하십시오 Functions That Search JSON Values

+0

그래서 당신에게 – smith

+0

감사를인가를 구문 분석하는 XML 또는 JSON과 같은 저장 프로 시저를 사용하는 적절한 방법에있는 개체의 목록을 직렬화 할 수 @ 스미스 환영, 허용 또는 upvote 내 대답 표시를 고려하십시오 :) –

0

난 당신이 내가이

SET TypeCat = CONCAT(CONVERT('$.', CHAR(50)), T) 
할 것을 찾기 위해 어떤 키 변수에 시도하는 경우 5.7

MySQL의에서이 작업을 수행 할 수 있었다

이유는 Mysql이 '$.'이 두 배로 생각하기 때문에 Char로 캐스팅해야했습니다.

DROP PROCEDURE IF EXISTS web.newTransaction; 

CREATE PROCEDURE web.newTransaction (DATA JSON) 
    BEGIN 


    ## Declare Vars ### 
    DECLARE done INT DEFAULT FALSE; 

    DECLARE TypeCat VARCHAR(255); 

    DECLARE s JSON; 

    # CURSOR 1 
    DECLARE T VARCHAR(255); ## Transaction 
    DECLARE TVT VARCHAR(255); ## TransactionValueTable 
    DECLARE cur1 CURSOR FOR SELECT Transaction, TransactionValueTable FROM web.TransactionType; 




    ##### Error Handlers #### 

    ### Error Handle for Loop ## 

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=TRUE; 

    DECLARE exit handler for sqlexception 
    BEGIN 
     -- ERROR 
     SHOW ERRORS; 
    ROLLBACK; 
    END; 

    DECLARE exit handler for sqlwarning 
    BEGIN 
     -- WARNING 
    SHOW WARNINGS; 
    ROLLBACK; 
    END; 



    OPEN cur1; 

    START TRANSACTION; 
    -- Start our for loop 
    forLoop: LOOP 

     FETCH cur1 INTO T,TVT; 
     IF done = TRUE THEN 
     LEAVE forLoop; 
     END IF; 

     SET TypeCat = CONCAT(CONVERT('$.', CHAR(50)), T); 


     IF (SELECT JSON_CONTAINS_PATH(DATA, 'one', TypeCat) = 1) 
     THEN SET s =JSON_EXTRACT(DATA, TypeCat); 
     END IF; 



    -- End our for loop 
    END LOOP forLoop; 


    COMMIT; 

    SELECT s; 
END; 

call web.newTransaction('{"Owner": "user","Title": "Fix Function Foo" }'); 

https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html