0
Как вызвать функцию ORACLE из OCI?
Я могу вызвать хранимую процедуру ORACLE через OCI в программе на C, создав команду SQL для команды, вот краткий фрагмент моего кода:
/* build sql statement calling stored procedure */
strcpy ( sql_stmt, "call get_tab_info(:x)" );
rc = OCIStmtPrepare(p_sql, p_err, sql_stmt,
(ub4) strlen (sql_stmt), (ub4) OCI_NTV_SYNTAX, (ub4) OCI_DEFAULT);
Но как мне создать вызов (в моей программе на C) функции ORACLE со следующей подписью:
CREATE OR REPLACE FUNCTION get_seq_number (p_table_name IN VARCHAR2, p_seq_type IN VARCHAR2)
RETURN NUMBER IS
Чтобы вызвать функцию в PL / SQL, я бы использовал, например:
v_seq := get_seq_number(v_tabname, v_seqtype);
Как мне создать массив символов SQL (sql_stmt) для вызова функции ORACLE в моей программе на C?
Ответов (2)2
Решение
0
Постройте свой SQL-статус следующим образом
strcpy ( sql_stmt, "BEGIN :v_seq := get_seq_number(:v_tabname, :v_seqtype); END;" );
Подготовьте свое заявление, как раньше. Свяжите переменные по имени (включая v_seq
предыдущее в коде и выполните оператор. Когда процедура завершится, значение: v_seq будет установлено правильно.