我正在通过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)));
该executeUpdate的返回更新行数; 否则为0,对于不返回任何内容的SQL语句。
该的executeQuery返回的ResultSet类的实例,但调用存储过程是不是一个选择,这样你就撕毁合同。
不支持您尝试执行的操作。
您可以使用C#作为粘合代码,也可以通过.NET CLR Interop直接使用C#类型。