此过程工作不正常。
create or replace procedure bank_search_sp
(
p_tablename in varchar2,
p_searchname in varchar2,
p_bankcode out varchar2,
p_bankname out varchar2,
p_dist_code out number
)
as
v_tem varchar2(5000);
begin
v_tem :='select bankcode,bankname,dist_code from ' || UPPER (p_tablename) || '
where bankname like '''|| p_searchname||'';
execute immediate v_tem into p_bankcode,p_bankname,p_dist_code using p_searchname ;
commit;
end bank_search_sp;
程序正在创建中,但我不知道执行时实际发生了什么,这是显示的错误
ORA-01756:带引号的字符串未正确终止ORA-06512:在"PENSIONS.BANK_SEARCH_SP",第14行ORA-06512:在第1行
此行缺少尾随逗号:
v_tem :='select bankcode,bankname,dist_code from ' || UPPER (p_tablename) || '
where bankname like '''|| p_searchname||'''';
注意字符串片段末尾的4个逗号。第一个打开字符串,最后一个关闭字符串,中间两个插入一个逗号,该逗号将作为搜索表达式的结束逗号)。
UPPER()
功能不是必需的;Oracle不在乎对象名称的大小写。
我不确定拥有多个具有相同结构的表是否是最佳解决方案。一个表只有一个索引列来表示银行之间的差异,这不是更好吗?