입니다 반환 2008 R2 MSSQL 절차MS SQL rocedure를 사용하여 테이블에 삽입하고 mssql 2008 r2에서 상태 메시지를 반환하지 않습니다. 예외 절차가 나는 SQL Server에서 다음 절차를 테이블 값 함수
/****** 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 [email protected]
GO
그리고 내가
자바 다오 방법 아래로 자바를 사용하고
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) 함수/PROC b) SELECT 문, C의 입력에서의 입력 파라미터를 사용하여) 테이블로 반환 값을 삽입 D 3 개 파라미터를 보내) 삽입 된 행/성공/실패 상태를 반환합니다.
은 지금부터 나는 당신이, 당신은 헤더에 의견을 자신의 코드를 통해 갈 필요가 있다고 생각
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.
test_fn_transaction_seleted에 대한 코드를 게시하지 않았지만 오류로 인해 TVF라는 것을 알 수 있습니다. 귀하의 의도는 저장 프로 시저 test_fn_transaction_insert_log를 실행 하시겠습니까? –
프로 시저의 이름이 test_fn_transaction_insert_log이지만 test_fn_transaction_selected를 실행하고 있습니다. –