存储过程不会返回OUT参数

时间:2013-06-26 09:07:23

标签: sql-server jdbc

我在使用存储过程在MSSQL 2008数据库中创建项目时遇到问题。 我在客户端使用Flex与ADEP进行服务器连接。

数据库程序非常简单:

ALTER PROCEDURE [dbo].[testInsert_procedure]
    @id INT OUT,
    @v1 VARCHAR(50) = NULL,
    @v2 VARCHAR(50) = NULL
AS
BEGIN
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    INSERT INTO test1 (v1, v2)
    VALUES (@v1, @v2)

    SET @id = SCOPE_IDENTITY();
    SELECT @id as id;
END
GO

这是此存储过程的配置文件的目标:

<destination id="TestTableInsert">
    <adapter ref="java-dao" />
    <properties>
      <source>flex.data.assemblers.SQLAssembler</source>
      <scope>application</scope>
      <metadata>
        <identity property="id"/>
      </metadata>
      <server>
        <database>
          <datasource>java:comp/env/jdbc/TEST</datasource>
        </database>
        <actionscript-class>classes.TestClass</actionscript-class>
        <create-item>
          <procedure name="testInsert_procedure">
            <procedure-param property-value="#id#" type="OUT" />
            <procedure-param property-value="#v1#" />
            <procedure-param property-value="#v2#" />
          </procedure>
        </create-item>
      </server>
    </properties>
  </destination>

使用此配置会出现下一个错误:

Jun 25, 2013 2:47:26 PM org.apache.catalina.core.ApplicationContext log
INFO: [Data Services] [DEBUG] SQL Assembler jdbc exception on operation=create-item error=com.microsoft.sqlserver.jdbc.SQLServerException: The value is not set for the parameter number 1.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)

我发现可能是JDBC bug ... 那么,获取OUTPUT参数只是错误的配置,或者这确实是JDBC错误?

更新:Java正在服务器端使用Microsoft JDBC驱动程序4.0

0 个答案:

没有答案