iT邦幫忙

0

SAP Business One - SBO_SP_TransactionNotification

各位好

小弟在SAP的SBO_SP_TransactionNotification寫了一段程式碼如下:

DECLARE @BPN NVARCHAR(200)
DECLARE @BPA NVARCHAR(200)
DECLARE @SO INT
DECLARE @SQ INT
SET @BPN = (SELECT TBN.U_BillTo FROM ODLN TBN WHERE TBN.DocEntry = @list_of_cols_val_tab_del)
SET @BPA = (SELECT TBA.U_BillAds FROM ODLN TBA WHERE TBA.DocEntry = @list_of_cols_val_tab_del)
SET @SO = (SELECT TSO.BaseEntry FROM DLN1 TSO WHERE TSO.LineNum = 0 AND TSO.DocEntry = @list_of_cols_val_tab_del)
SET @SQ = (SELECT TSQ.BaseEntry FROM RDR1 TSQ
INNER JOIN DLN1 TSQN ON TSQ.DocEntry = TSQN.BaseEntry AND TSQN.LineNum = 0
WHERE TSQN.DocEntry = @list_of_cols_val_tab_del)
BEGIN
UPDATE ORDR SET U_BillTo = @BPN WHERE ORDR.DocEntry = @SO
UPDATE OQUT SET U_BillTo = @BPN WHERE OQUT.DocEntry = @SQ
END

可是在SAP執行後,Item Master在存檔時會出現:conversion failed when convert nvarchar into data type int的錯誤訊息,不知道有沒有大大可以指出我的錯誤?謝謝!!

1 個回答

2
暐翰
iT邦大師 1 級 ‧ 2018-06-04 19:37:59

這個錯誤是把整數當字串來使用
沒有經過轉型

舉例:

  • 錯誤:
DECLARE @BPA NVARCHAR(200) = 'hello it help';
DECLARE @SQ INT = 1;

select @BPA + @SQ;
--result : Conversion failed when converting the nvarchar value 'hello it help' to data type int.
  • 正確:
DECLARE @BPA NVARCHAR(200) = 'hello it help';
DECLARE @SQ INT = 1;

select @BPA +  CAST(@SQ AS NVARCHAR(10));
--result : hello it help1

另外補充:
SQL Server很聰明會自動把數字的字串轉成數字
但是會有問題如:'2'+1不是3而是21

DECLARE @BPA NVARCHAR(200) = '2';
DECLARE @SQ INT = 1;

select @BPA +  CAST(@SQ AS NVARCHAR(10));
--result : 21

db fiddle demo link


結論:

檢查型態就可以 :)

rogermou iT邦新手 4 級 ‧ 2018-06-05 08:28:41 檢舉

謝謝,我試過了,還是出現一樣的訊息~~

暐翰 iT邦大師 1 級 ‧ 2018-06-05 09:16:41 檢舉

能提供你嘗試的script嗎

rogermou iT邦新手 4 級 ‧ 2018-06-05 09:21:10 檢舉

Dear 暐翰

謝謝,剛剛找到問題了,是我沒有先事先定義Object Type造成的~~

我要發表回答

立即登入回答