Как получить доступ к значению параметра out хранимой процедуры при использовании API-интерфейса службы данных AWS RDS? - PullRequest
0 голосов
/ 19 октября 2019

При использовании API данных AWS RDS для выполнения хранимой процедуры в базе данных MySQL, как получить значение параметров out, установленных хранимой процедурой?

В приведенном ниже примере я ищукак получить значение «99», установленное процедурой для @ o.

SQL:

DELIMITER ||
CREATE PROCEDURE say_hello_and_out_99(
  OUT p_ INT
)
SQL SECURITY INVOKER

BEGIN
  SET p_ = 99;

  SELECT 
    'hello' info
  ;

END
||
DELIMITER ;

GRANT EXECUTE ON PROCEDURE say_hello_and_out_99 TO '(my user)';

Test Lambda :

exports.handler = async (event) => {

  const aws = require('aws-sdk');
  const rdsd = new aws.RDSDataService();
  const util = require('util');

  await rdsd.executeStatement({

      resourceArn: '(my arn)',
      secretArn: '(secret for my user)',

      database: '(my db)',
      sql: 'CALL say_hello_and_out_99(@o);', 

      continueAfterTimeout: true,
      includeResultMetadata: true
  })
    .promise()
    .then( 
      val => console.log('yes',val,util.inspect(val.records)), 
      err => console.log('err',err, err.stack)
    )
  ;

  return { 
    statusCode: 200
  };

};

Лямбда-результаты:

Response:
{
  "statusCode": 200
}

Request ID:
"(---)"

Function Logs:
START RequestId: (---) Version: $LATEST
2019-10-19T20:23:29.550Z    (---)   INFO    yes { columnMetadata:
   [ { arrayBaseColumnType: 0,
       isAutoIncrement: false,
       isCaseSensitive: false,
       isCurrency: false,
       isSigned: false,
       label: 'info',
       name: 'info',
       nullable: 0,
       precision: 5,
       scale: 0,
       schemaName: '',
       tableName: '',
       type: 12,
       typeName: 'VARCHAR' } ],
  numberOfRecordsUpdated: 0,
  records: [ [ [Object] ] ] } [ [ { stringValue: 'hello' } ] ]
END RequestId: (---)

mysql Результаты клиента:

mysql> CALL say_hello_and_out_99(@o); SELECT @o;
+-------+
| info  |
+-------+
| hello |
+-------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

+------+
| @o   |
+------+
|   99 |
+------+
1 row in set (0.00 sec)
...