我似乎無法使用SAP HANA中的declare語句來獲取查詢。下面我將SQL轉換器的原始工作T-SQL版本和HANA版本輸出。我已經嘗試過幾個版本和組合,但是每次我都會收到您在下面也會發現的錯誤。任何人願意給我一個「如何」,所以我可以複製這個?我還闡述了SAP文檔,但沒有什麼可以幫助我。 您的幫助將不勝感激。將T-SQL Declare語句轉換爲SAP HANA
的T-SQL代碼:
DECLARE @NumAtCardDuplicate VARCHAR(50)
SET @NumAtCardDuplicate =
(SELECT TOP 1 DocNum
FROM TEST_RSCA.OPCH
WHERE CardCode = 'S100424'
AND NumAtCard = '118 120 266 805')
IF @NumAtCardDuplicate IS NOT NULL
SELECT 'Invoice number already used in entry ' + @NumAtCardDuplicate + '!'
ELSE
SELECT '118 120 266 805'
翻譯的HANA查詢:
NumAtCardDuplicate varchar(50);
SELECT
(SELECT TOP 1 "DocNum"
FROM TEST_RSCA.OPCH
WHERE "CardCode" = 'S100424'
AND "NumAtCard" = '118 120 266 805')
INTO NumAtCardDuplicate FROM DUMMY;
temp_var_0 integer;
SELECT :NumAtCardDuplicate INTO temp_var_0 FROM DUMMY;
IF :temp_var_0 IS NOT NULL THEN
SELECT 'Invoice number already used in entry ' || :NumAtCardDuplicate || '!'
FROM DUMMY;
ELSE
SELECT '118 120 266 805'
FROM DUMMY;
END IF;
的錯誤,我得到:
持續時間7Could not execute 'NumAtCardDuplicate varchar(50)' in 1 ms 989 µs .
SAP DBTech JDBC: [257]: sql syntax error: incorrect syntax near "NumAtCardDuplicate": line 1 col 1 (at pos 1)
Could not execute 'SELECT (SELECT TOP 1 "DocNum" FROM TEST_RSCA.OPCH WHERE "CardCode" ='S100424' AND "NumAtCard" = ...' in 3 ms 578 µs .
SAP DBTech JDBC: [337] (at 119): INTO clause not allowed for this SELECT statement: line 4 col 67 (at pos 119)
Could not execute 'temp_var_0 integer' in 1 ms 701 µs .
SAP DBTech JDBC: [257]: sql syntax error: incorrect syntax near "temp_var_0": line 1 col 1 (at pos 1)
Could not execute 'SELECT :NumAtCardDuplicate INTO temp_var_0 FROM DUMMY' in 1 ms 976 µs .
SAP DBTech JDBC: [467]: cannot use parameter variable: NUMATCARDDUPLICATE: line 4294967295 col 4294967295 (at pos 4294967295)
Could not execute 'IF :temp_var_0 IS NOT NULL THEN SELECT 'Invoice number already used in entry ' || ...' in 1 ms 560 µs .
SAP DBTech JDBC: [257]: sql syntax error: incorrect syntax near "IF": line 1 col 1 (at pos 1)
Could not execute 'ELSE SELECT '118 120 266 805' FROM DUMMY' in 1 ms 338 µs .
SAP DBTech JDBC: [257]: sql syntax error: incorrect syntax near "ELSE": line 1 col 1 (at pos 1)
SAP DBTech JDBC: [257]: sql syntax error: incorrect syntax near "END": line 1 col 1 (at pos 1)
語句:13毫秒
最明顯的區別是,你正在使用的程序,而OP可能沒有。有沒有辦法做到這一點,而不創建一個過程?爲什麼不支持變量和遊標的臨時查詢? –