如何获得直接的SQL调用的结果存储过程?(How to get the results of a d

2019-06-27 13:18发布

我打电话通过从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)));

Answer 1:

该executeUpdate的返回更新行数; 否则0表示不返回任何SQL语句。

该的executeQuery返回的ResultSet类的实例,但调用存储过程是不是一个选择,这样你就撕毁合同。

不支持你正在尝试做的。

您可以使用C#作为胶水代码或者使用直接使用C#类型的.NET CLR互操作 。



文章来源: How to get the results of a direct SQL call to a stored procedure?