Может ли любой орган, пожалуйста, помочь? Я получаю ниже ошибки для кода.Нужна помощь для отладки кода
ОРА-06550: строка 20, столбец 33:
PLS-00306: неправильное число или типы аргументов в вызове к '||'
ORA-06550: строка 20, столбец 12:
PL/SQL: Заявление игнорировали
... Condition1: если я ставлю значение явно в моем параметризующих курсор, то он не достигает до 2 ДЛЯ петля. и после печати выполняется оператор «Внутри». Условие2. Если я поместил переменную как параметр, то она даст вышеупомянутую ошибку.
DECLARE
/* First cursor */
CURSOR get_tables IS
SELECT DISTINCT * FROM src_table_list tbl ;
/* Second cursor */
CURSOR get_columns(v_table_name varchar2) IS
SELECT SUBSTR (SYS_CONNECT_BY_PATH (column_name, ','), 2) csv
FROM (SELECT column_name , ROW_NUMBER() OVER (ORDER BY column_name) rn,
COUNT (*) OVER() cnt
FROM USER_TAB_COLUMNS where table_name = v_table_name)
WHERE rn = cnt
-- and col.sn = v_sn
START WITH rn = 1
CONNECT BY rn = PRIOR rn + 1;
BEGIN
FOR i IN get_tables LOOP
dbms_output.put_line('Inside ');
FOR j IN get_columns(i.table_name) LOOP
dbms_output.put_line('SELECT '|| j ||'FROM'||i.table_name||' ;');
dbms_output.put_line(' ');
END LOOP;
END LOOP;
END;
/
Возможно, второй запрос неверен. Вы пробовали это самостоятельно, передавая фиксированное имя таблицы? Больше нет синтаксической ошибки, но я не могу точно сказать, что вы хотите вернуть. См. Вопрос + предложение в последней строке моего ответа. – GolezTrol
Симптомы ясны, поэтому, пожалуйста, внимательно прочитайте: * Строка не игнорируется, но второй курсор просто не возвращает никаких строк. * Просто попробуйте написать его как запрос, что значительно упрощает тестирование и отладку. После этого вы можете вернуть его в эту процедуру. – GolezTrol