[英]SAP HANA Procedure Dynamic SQL Select Into Variable: Not Working
關於如何在過程或計算視圖中使用空間函數的任何想法? 我不能使用表函數,因為我需要一個游標。 請參閱以下問題:
我在存儲過程中嘗試使用 select into(不允許進入)動態 SQL:(大約三個月前它確實有效,但現在無法激活?)此博客說它應該有效: https : //blogs.sap.com /2017/04/18/sap-hana-2.0-sps-01-new-developer-features-database-development/
動態 SQL:
EXECUTE IMMEDIATE 'SELECT NEW ST_Point(' || char(39) || 'POINT(' || decEndPointLong1 || ' ' || decEndPointLat1 || ')' || char(39) || ', 4326).ST_Distance( NEW ST_Point(' || char(39) || 'POINT(' || CURRLONG || ' ' || CURRLAT || ')' || char(39) || ', 4326)) FROM DUMMY' INTO dDistEP1;
然后,我想我會創建一個計算視圖,這個博客說它應該可以工作: https : //blogs.sap.com/2018/02/23/compute-distance-using-a-calculation-view-xs-advanced -模型/
但是,不允許在以太列引擎或 SQL 引擎中使用空間函數。
計算列:
我回去嘗試重新激活包含此代碼的程序,該程序一直在工作,並且仍然有效,但是如果我編輯它並嘗試激活它,則會出現相同的編譯錯誤。 無法選擇到變量中。 所以,自從我第一次創建這個程序以來,事情發生了變化。
哇,我偶然發現了一種語法並不需要使用單引號: https://blogs.sap.com/2017/02/17/transforming-spatial-data-in-sap-hana/
SELECT NEW ST_Point(-117.0400842, 32.92197086).ST_SRID(4326).ST_Distance( NEW ST_Point(-117.0394467, 32.92241185).ST_SRID(4326)) FROM DUMMY
現在,我認為我可以消除動態 SQL。
看這兩種不同的方式:
1) SELECT NEW ST_Point(-117.0400842, 32.92197086).ST_SRID(4326).ST_Distance( NEW ST_Point(-117.0394467, 32.92241185).ST_SRID(4326)) FROM DUMMY;
2) SELECT NEW ST_Point('POINT(-117.0400842 32.92197086)', 4326).ST_Distance( NEW ST_Point('POINT(-117.0394467 32.92241185)', 4326)) FROM DUMMY;
它們產生略有不同的結果(米):
可能是因為(1)將計算的點轉換為4326,(2)根據4326計算點。
所以,這段代碼:
EXECUTE IMMEDIATE 'SELECT NEW ST_Point(' || char(39) || 'POINT(' || decEndPointLong1 || ' ' || decEndPointLat1 || ')' || char(39) || ', 4326).ST_Distance( NEW ST_Point(' || char(39) || 'POINT(' || CURRLONG || ' ' || CURRLAT || ')' || char(39) || ', 4326)) FROM DUMMY' INTO dDistEP1;
歸結為:
SELECT r1.FROMLAT INTO decEndPointLat1 FROM DUMMY;
SELECT r1.FROMLONG INTO decEndPointLong1 FROM DUMMY;
SELECT NEW ST_Point(decEndPointLong1, decEndPointLat1).ST_SRID(4326) INTO stEndCoord1 FROM DUMMY;
SELECT NEW ST_Point(CURRLONG, CURRLAT).ST_SRID(4326) INTO stCurrCoord FROM DUMMY;
SELECT stEndCoord1.ST_Distance(stCurrCoord) INTO dDistEP1 FROM DUMMY;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.