Случайная строка Oracle TimesTen

я хочу выбрать случайную строку в оракуле TimesTen (в базе данных памяти), я запрос EXEC следующим образом:

select DBMS_RANDOM.string('A', 6) AS "rnd" from dual

но высветился код ошибки:

TT1001: Синтаксическая ошибка в операторе SQL до или после: "(" Ошибка в строке: 1 Столбец: 26

Кто-нибудь знает причину проблемы?


person Hamidreza Shahmoradi    schedule 03.12.2018    source источник


Ответы (1)


В настоящее время Oracle TimesTen не поддерживает вызов функций PLSQL из инструкции SQL.

Лучший обходной путь — создать функцию PLSQL [или функцию пакета] и вызвать эту функцию из PLSQL.

Вызов функции PLSQL из основного языка, такого как JDBC, ODBC, OCI и т. д., в TimesTen выполняется так же, как и в СУБД Oracle.

Этот пример работает для TimesTen 11.2.2.8.x и 18.1.x:

create or replace function rand_string return varchar2 is
  str varchar2(255);
Begin
  str := DBMS_RANDOM.string('A', 6);
  Return str;
End;
/

set serveroutput on;

declare
  s1 varchar2(255);

begin
  dbms_output.put_line('Hi');
  s1 := rand_string;
  dbms_output.put_line('Random string is ' || s1);
end;
/

Hi

Случайная строка MlDYJy

person ScalableDBDoug    schedule 12.11.2019