如何解决如何获得对存储过程的直接SQL调用的结果?
该executeUpdate的返回更新行数; 否则为0,对于不返回任何内容的sql语句。
该的executeQuery返回的ResultSet类的实例,但调用存储过程是不是一个选择,这样你就撕毁合同。
不支持您尝试执行的操作。
您可以使用C#作为粘合代码,也可以通过.NET CLR Interop直接使用C#类型。
解决方法
我正在通过X ++中的直接SQL调用存储过程,但我不知道如何从中获取整数返回值。0是好的,-1是坏的。
// Login to SQL DB
loginProperty = new LoginProperty();
loginProperty.setServer('localhost');
loginProperty.setDatabase('SQL_DB');
odbcConnection = new OdbcConnection(loginProperty);
statement = odbcConnection.createStatement();
/*
@in_customer_id INT,@status INT,@dlvmode NVARCHAR(25),@dlvmodedesc NVARCHAR(50),@tracking_id NVARCHAR(50),@note NVARCHAR(MAX),@modified SMALLDATETIME = null,@override_email NVARCHAR(200) = null
*/
sqlStatement = strfmt(' EXEC pr_send_status_email ' +
' %1,' + // CustomerId
' %2,' + // Status
' %3,' + // DlvMode
' %4,' + // DlvMode description
' %5,' + // Tracking #
' %6,' + // Note
' %7' // DateTime,160308,2,sqlSystem.sqlLiteral("FD1"),sqlSystem.sqlLiteral("Fed Ex overnight"),sqlSystem.sqlLiteral("1ZABCDEF"),sqlSystem.sqlLiteral("Note Here"),sqlSystem.sqlLiteral(DateTimeUtil::utcNow()));
sqlStatementExecutePermission = new SqlStatementExecutePermission(sqlStatement);
sqlStatementExecutePermission.assert();
//BP deviation documented
resultSet = statement.executeQuery(sqlStatement);
//info(strfmt("%1",statement.executeUpdate(sqlStatement))); // I Tried this too
CodeAccessPermission::revertAssert();
if (resultSet.next()) // Errors here
info(strfmt("Return: %1",resultSet.getInt(1)));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。