2015-01-31 5 views
-1

입니다 반환 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. 
+0

test_fn_transaction_seleted에 대한 코드를 게시하지 않았지만 오류로 인해 TVF라는 것을 알 수 있습니다. 귀하의 의도는 저장 프로 시저 test_fn_transaction_insert_log를 실행 하시겠습니까? –

+0

프로 시저의 이름이 test_fn_transaction_insert_log이지만 test_fn_transaction_selected를 실행하고 있습니다. –

답변

0

함수입니다 아래 예외를 얻을, 당신은 SP 및 오류 메시지를 변경하는 것은 관한 것입니다 기능. 당신이 옳은 질문을하고 있다고 확신합니까?