我在使用存储过程在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