我在使用存储过程在 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 错误......那么,获取 OUTPUT 参数的配置错误还是这真的是 JDBC 错误?
更新:Java 在服务器端使用 Microsoft JDBC 驱动程序 4.0