sql hana yer tutucuya sql sorgusu yerleştirebilir miyim

Dec 15 2020

sql hana yer tutucuya sql sorgusu yerleştirebilir miyim?

aşağıdaki sorgu çalışır:

     Select * From table1
     ('PLACEHOLDER' = ('$$IP_ShipmentDate$$', '2020-01-01'))

Aşağıdakine benzer bir şey geçmeye çalışıyorum:

      Select * From table1
     ('PLACEHOLDER' = ('$$IP_ShipmentDate$$', 
       Select TO_VARCHAR(min("some_date"),'YYYY-MM-DD') from Table2)

Şu anda sözdizimi hatası alıyorum

Yanıtlar

1 astentx Dec 21 2020 at 16:33

Hata size söylediği gibi ifadeler sütun görünümü parametresi için desteklenmez: Can't use column expression as column view parameter.

Ancak, hesaplamak için seçenekler var:

  • Parametrenizin değeri bu hesaplanan görünümle anlamsal olarak ilişkiliyse (örneğin, bu görünüm için bazı mantığa göre hesaplanan bazı varsayılan değere ihtiyacınız varsa), değeri hesaplamak için bir çıktı parametresiyle bir saklı yordam oluşturabilir ve parametre türünü kullanabilirsiniz. Prosedürden / Skaler Fonksiyondan Türetilmiştir . Bu değeri ön uçtan ayarlanabilir hale getirmek için, bunu Giriş etkin olarak işaretleyebilirsiniz . Veya hesaplanan değer kullanıcı girdisine dayanıyorsa, prosedür giriş parametrelerini, giriş parametreleri için Parametreler / Değişkenler -> Prosedürler / Skaler fonksiyonlar bölümünde hesaplama görünümünün giriş parametreleriyle eşleyebilirsiniz .
create procedure sp_dummy (
  in dummy nvarchar(10) default '0',
  out val nvarchar(10)
)
as begin
  val = to_char(current_date, 'yyyymmdd');
end;

  • Parametrenizin değeri hesaplama görünümüyle ilgili değilse ve yalnızca bu değer için bazı verileri almak için hesaplama görünümünü kullanıyorsanız, saklı yordamın / SQLScript bloğunun sonuç kümesi özelliğini kullanabilirsiniz . SQL yürütücünüz SQL ifadesini ayrıştırmaya çalışmazsa (örneğin, SAP BO, SELECTbazı SP'den sonra ilk SQL kelimesini denetler , bu nedenle bu yol onun için geçerli olmayacaktır) ve yalnızca sütun tanımları için meta veri olarak sonuç kümesi alırsa, daha sonra hesaplama mantığını sarmak için fazladan nesneden kaçınabilirsiniz.

Bir sonuç kümesi döndürmek için, bir SELECT deyimi kullanın çünkü anonim blokların tanımlanmış herhangi bir parametresi yoktur.

do begin
  declare lv_param nvarchar(100);
  select max('some_date')
    into lv_param
  from dummy /*your_table*/;
  
  select *
  from "_SYS_BIC"."path.to.your.view/CV_TEST" (
    PLACEHOLDER."$$P_DUMMY$$" => :lv_param
  );
end;

RSPCLOGCHAINYukarıda açıklanan prosedürün çıktısına göre filtrelenen tabloya dayalı hesaplama görünümü ile bana şunu verir:

LOG_ID                    | DATUM    | INPUT_PARAM | CUR_DATE
--------------------------+----------+-------------+----------
8FRV39X1O8814X6IJMLPI47PV | 20201221 | some_date   | 20201221
C7S9EY3J0GYA76Y2S9CIA39QR | 20201221 | some_date   | 20201221
35R8A3RFUG00EBY8MZQWJLIXF | 20201221 | some_date   | 20201221
850MVHOJIKIDD7EVY6WFIYPZN | 20201221 | some_date   | 20201221
1 LarsBr. Dec 16 2020 at 11:41

Hayır, desteklenmiyor.

Parametre arabirimi yalnızca karakter dizileri içindir. SEÇMELER veya ifadeler HANA tarafından değerlendirilmeyecektir.

Dinamik seçim parametrelerini elde etmek için (örneğin, geçerli tarih veya üç hafta önce ), varsayılan değerleri depolanan prosedürler aracılığıyla ayarlamaya veya istemci (ön uç) aracında istenen değerleri hesaplamaya bakmak isteyebilirsiniz .