当前位置: 首页 > 面试题库 >

如何获得对存储过程的直接SQL调用的结果?

卢光远
2023-03-14
问题内容

我正在通过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#类型。



 类似资料:
  • 本文向大家介绍SQL SERVER调用存储过程小结,包括了SQL SERVER调用存储过程小结的使用技巧和注意事项,需要的朋友参考一下 在SQL Server数据库的维护或者Web开发中,有时需要在存储过程或者作业等其他数据库操作中调用其它的存储过程,下面介绍其调用的方法 一、SQL SERVER中调用不带输出参数的存储过程 SQL 代码 二、SQL SERVER中调用带输出参数的存储过程 SQL

  • 问题内容: 我已经查看了与该问题相关的Stack Overflow上的其他问题,但是似乎没有一个问题能清楚地回答这个问题。 我们有一个名为sp_who2的系统存储过程,该过程为服务器上所有正在运行的进程返回信息的结果集。我想过滤存储过程返回的数据;从概念上讲,我可能会这样做: 但是,该方法不起作用。有什么好的做法可以实现查询存储过程的返回数据的目标,最好无需查看原始存储过程的代码并对其进行修改。

  • 问题内容: 我正在编写一个存储过程,需要在该过程中动态构造一个SQL语句以引用传入的表名。 我需要让该SQL语句返回结果,然后可以在整个过程的其余部分中使用它。 我已经尝试过使用临时表和其他所有东西,但是我不断收到一条消息,我需要声明变量等。 例如: 或者… 无论如何,有没有这样做而不使用实际表? 谢谢。 问题答案: 您是否尝试过类似的方法: 您需要确保将nvarchar字符串加N作为前缀,例如。

  • 问题内容: 我有一个需要很多参数的插入存储过程-其中2个是@ FirstName,@ LastName。我还有一个更新存储过程,该过程需要许多参数-其中2个是@ FirstName,@ LastName。 我想做的是,从插入SP内部完成之后,调用更新SP并将其发送给@ FirstName,@ LastName。 我不知道这样做的正确语法;我试过了: 但我认为这是错误的。 有人可以告诉我怎么写这个电

  • 问题内容: 是否可以找出谁调用了存储过程? 例如,假设我在中遇到错误。从该proc中,我想知道它是由还是调用的。 问题答案: 如果这对您的逻辑很重要,我将使用一个额外的输入参数来指定源。 这也将使您更容易将数据库移植到另一个平台,因为您不依赖于某些晦涩的平台相关功能。

  • 问题内容: 我并不是说要进行“ SET NOCOUNT OFF”。但是我有一个存储过程,可用于将一些数据插入某些表中。此过程创建一个xml响应字符串,下面让我举一个例子: 因此,我整理了一个脚本,该脚本多次使用此SP,并且xml“输出”变得太多了(它已经使我的盒子崩溃了)。 有没有办法抑制或重定向由此存储过程生成的输出?我不认为修改此存储过程是一种选择。 谢谢。 我想我应该澄清一下。上面的SP被我