在mssql 2008 r2中,使用MS sql过程将java插入表并返回状态消息失败。返回异常过程是一个表值函数
我在SQLServer2008R2中有以下过程 MSSQL程序
/****** Object: UserDefinedFunction [dbo].[test_fn_transaction_search] Script Date: 01/30/2015 11:57:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
alter PROCEDURE test_fn_transaction_insert_log @receipt varchar(25), @amount varchar(25), @stdt varchar(25),
@enddt varchar(25)
AS
SET NOCOUNT ON
INSERT INTO [TransactionLog] ( TimeStamp, CashierID, Total,RecurringStartDate,
RecurringStopDate, CustomerID, ReceiptNumber, Voided, Attendee, ItemLookupCode)
SELECT CURRENT_TIMESTAMP AS [TimeStamp], tr.CashierID, @amount, @stdt,@enddt,c.ID,tr.ReceiptNumber,
tr.Voided,it.ItemLookupCode, tr.Comment
from "Transaction" tr, TransactionEntry trent, Item it, Customer c
where trent.TransactionID = tr.ID
and trent.ItemID = it.ID
and c.ID=tr.CustomerID
and tr.ReceiptNumber=@receipt
GO
我在Java中使用它,如下所示
Java Dao方法
public String saveTr(String a, String b, String c, String d) {
try
{
SqlServerConn conn = new SqlServerConn();
connect=conn.getConnection();
String SQL = String.format("Exec test_fn_transaction_selected ?,?,?,?");
pstmt = connect.prepareStatement(SQL);
pstmt.setString(1, a);
pstmt.setString(2, b);
pstmt.setString(3, c);
pstmt.setString(4, d);
rs = pstmt.executeQuery();
}
catch (Exception e2)
{
e2.printStackTrace();
return "fail";
}
//ArrayList<Transactions> list=getrowFromResultSet2(rs);
return "success";
}
我得到以下例外。谁能告诉我出了什么问题吗
我在网上读到了以下关于MSSQL的文章,这引起了很多混乱
a)函数不能用于将值插入临时表以外的表中。 b) 过程无法返回表值
那么,如何做到以下三点呢 a) 向函数/过程发送3个参数 b) 将输入参数用作select语句的输入, c) 将返回的值插入表中, d) 返回插入的行/成功/失败状态
到目前为止,我得到以下例外
com.microsoft.sqlserver.jdbc.SQLServerException: The request for procedure 'test_fn_transaction_selected' failed because 'test_fn_transaction_selected' is a table valued function object.
# 1 楼答案
我认为你们需要检查你们自己的代码,你们在标题处的注释是为了一个函数,你们在修改一个SP,错误信息是关于一个函数的。你确定你问的问题是对的吗