当前位置:网站首页>oracle存储过程中表名变量的异常
oracle存储过程中表名变量的异常
2022-08-08 10:36:00 【赵勇】
当前存储过程部分代码如下
1. for i in (select table_name,table_column from XXX) loop
2. v_table_name := i.table_name;
3. v_table_column := table_column;
4. for j in (select a,b,v_table_column from v_table_name) loop
5. ...
6. end loop;
7. end loop;
第四行这里v_table_name显示表名无效,这里应该怎么写?
其他答案1:
要用动态SQL,拼接SQL。比如:
v_sql:=‘select a,b,’||v_table_column||’ from '||v_table_name;
execute immediate v_sql;
但你这里是for j in ,所以,也要改。需要对该行及其下的整段代码做动态处理。
另外,也可以考虑对这个部分再做一个存储过程(或函数),v_table_name和v_table_column做为入参。
其他答案2:
1. for i in (select table_name,table_column from XXX) loop
2. v_table_name := i.table_name;
3. v_table_column := i.table_column;
4. for j in (select a,b,v_table_column from v_table_name) loop
5. ...
6. end loop;
7. end loop;
其他答案3:
这个肯定涉及到了动态sql,但是和一般的动态sql有点区别,这里的动态sql字符串,需要作为一个游标,可以参考下面这个例子
declare l_sql varchar2(4000) := 'select * from dba_VIEWS a where a.VIEW_name IN (''DBA_TABLES'',''DBA_VIEWS'',''DBA_TAB_COLS'') '; l_row dba_VIEWS%rowtype; type r is record( a number, b number, c varchar2(200)); l_row2 r; type cur is ref cursor; curs cur; curs_2 cur;begin open curs for l_sql; loop fetch curs into l_row; exit when curs%notfound; open curs_2 for 'select 1 a,2 b,'''||l_row.VIEW_name||''' from ' || l_row.VIEW_name||' WHERE ROWNUM<=5'; loop fetch curs_2 into l_row2; exit when curs_2%notfound; dbms_output.put_line(l_row2.a||','||l_row2.b||','||l_row2.c); end loop; close curs_2; end loop; close curs;end;
边栏推荐
猜你喜欢
随机推荐
上海控安SmartRocket系列产品推介(二):SmartRocket Modeler可视化建模开发工具
技术分享 | 接口自动化测试之JSON Schema模式该如何使用?
ReentrantLock源码分析和使用案例
图数据库一般用于什么时候呢?
嵌入式C编程中错误异常该如何统一处理?
面试突击72:输入URL之后会执行什么流程?
自学脚手架——《热学》 by 李椿(第一,二,三,四,五章)
关于win下面Celery服务报 Process 'Worker' exited with 'exitcode 1' [duplicate]
典型的NoSQL数据库有哪些呢?
使用C# 调用api接口获取法定节假日(百度api)
2022 world conference on robots is holding, intelligent robot booster to intelligent, digital transformation and upgrading traditional industry
Redis 定长队列的探索和实践
【kali-权限提升】(4.2.4)社会工程学工具包:远控木马使用、设置、利用
二、线性结构
简单混合运算计算器
分布式系统设计策略
机器学习模型太慢?来看看英特尔(R) 扩展加速
NoSQL数据库有哪些优势吗?又有哪些劣势呢?
一、用户数据仓库
开源一夏 | 牛plus,多层嵌套动态JSON该如何解析总结