Uso de AEs para exceder os limites de argumentos da função SQL do NPS
No NPS, as funções SQL são limitadas a 64 argumentos. Os AEs fornecem uma maneira de exceder esse limite, usando uma função escalar instalada chamada NZAEMULTIARG. Essa função recebe até 64 argumentos e retorna uma string varchar que contém uma serialização compactada de todos os argumentos. O tempo de execução do AE pode desserializar esses argumentos compactados e fazê-los aparecer para um AE como argumentos padrão. As chamadas NZAEMULTIARG também podem ser aninhadas para que um AE possa receber um número significativamente maior de argumentos. O tamanho combinado de todos os argumentos é limitado pelo sistema NPS a 64 K bytes. O NZAEMULTIARG também pode ser usado com UDXs.
SELECT * FROM DATA AS t, TABLE WITH
FINAL(my_table_function_ae(NZAEMULTIARG(t.f1, t.f2, t.f3), 100, 200,
NZAEMULTIARG('a', 'b', 'c', 'd'), 100.6));
t.f1, f.f2, t.f3, 100, 200, 'a', 'b', 'c', 'd', 100.6
Neste exemplo, ' my_table_function_ae é registrado com a assinatura de argumento VARARGS, que é a palavra-chave para qualquer número e tipo de argumentos.
O NZAEMULTIARG pode não funcionar bem com shapers, pois a saída do NZAEMULTIARG nunca é um literal e os shapers recebem apenas literais. No entanto, uma combinação de NZAEMULTIARG e argumentos literais pode ser usada para contornar essa limitação. Para obter mais informações, consulte Introdução aos shapers e sizers.
myfunction(NZAEMULTIARG(f1, 'abc'), 'constant for Shaper');