2013-11-21 3 views
1

저장 프로 시저를 호출하기 위해 node-mysql을 사용합니다. 결과에 somefield 스키마가 포함되어 있습니다. fieldCount, affectedRows, 이것을 무시하는 방법은 무엇입니까?저장 프로 시저 결과를 반환하지 않습니다.

mysql을 사용하여 프로 시저를 호출 할 때 이러한 스키마가 없습니다.

절차 :

DELIMITER \\ 
CREATE PROCEDURE QUERY_USER (IN p_name VARCHAR(15)) 
BEGIN 
    SELECT id,name FROM user WHERE name=p_name; 
END\\ 

결과 :

[ 
    [ 
    { 
     "id": 2, 
     "name": "codar" 
    }, 
    { 
     "id": 3, 
     "name": "codar" 
    } 
    ], 
    { 
    "fieldCount": 0, 
    "affectedRows": 0, 
    "insertId": 0, 
    "serverStatus": 34, 
    "warningCount": 0, 
    "message": "", 
    "protocol41": true, 
    "changedRows": 0 
    } 
] 

답변

1

당신이 찾고있는 결과 그들은의 첫 번째 요소에 중첩되어 ... 당신이보고있는 배열의 구성원이 아닌 이 배열 자체는 또 다른 배열입니다. 예제에서는 하나의 멤버 만 있지만 행이 더 많은 경우에는 내부 배열의 멤버가되고 외부 배열은 멤버가됩니다.

저장 프로 시저를 사용하면 첫 번째 결과 집합의 첫 번째 행을 [0] [0] 요소로, 두 번째 행 (있는 경우)을 [0 ] [1], 세 번째 (있는 경우) [0] [2] ... 등등. 결과는 [0], [1], [2]에 없으며 모두 [0] 안에 중첩 된 배열에 있습니다.

0

예, 위와 같이 쿼리 결과를 얻기 위해 프로 시저를 호출 할 때 return set은 직접 쿼리와 다르며 fieldCount, affectedRows와 같은 정보가 포함되어 있습니다.

var GetgroupList_Sql = "call GetActiveGroup(1); "; 
mysqlHelper.ExecuteQuery(GetgroupList_Sql,, function (error, result) { 
    if (error) { 
     res.json({success: false, data: error}); 
     return; 
    } 
    console.log(result[0]); 
}); 

주요 지점 [0] 정상 쿼리처럼 발생하지 결과를 사용하고 있습니다 : 은 그래서 당신은 같은 노드 코드 측에서 그것을 할 수 있습니다. 즉 :

참조 문서 : http://www.sitepoint.com/using-node-mysql-javascript-client/

관련 문제