我有下面的查询给出了一个错误,因为遇到一个符号(在使用循环的行中我尝试开发一个函数,它将动态参数作为table_name,column_name,table_id用于其他表。还有执行立即在oracle中
FUNCTION get_encryp_pass(table_name IN varchar2,column_name IN varchar2,table_id IN varchar2) RETURN VARCHAR2
IS
BEGIN
EXECUTE IMMEDIATE 'for c1 in (select * from' || table_name ||) loop
EXECUTE IMMEDIATE 'update ' || table_name || ' set ' || column_name = encrypt_val(c1.column_name) || ' where ' || table_id || ' = ' || c1.table_id and column_name is not null;
end loop;
END get_encrypt_pass;
您没有足够的单引号。例如,在附加表名后,您需要再次引用引号)。 'EXECUTE IMMEDIATE'需要一个字符串。 – Nitish
@Nitesh我尝试过,但仍然得到相同的错误。 Jchomel你能解释一下吗? – Andrew
示例表是什么样子的,以及该表的3个输入参数中有些可能的值是什么? – ruudvan