oracle 不能是用变量来作为列名和表名 ,但使用动态sql可以;

Posted linbobo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 不能是用变量来作为列名和表名 ,但使用动态sql可以;相关的知识,希望对你有一定的参考价值。

ORACLE 不能使用变量来作为列名 和表名 一下是个人的一些验证:

 1 DECLARE
 2 ename1 emp.ename%TYPE ;
 3 TYPE index_emp_type IS TABLE OF VARCHAR2(100) INDEX BY PLS_INTEGER ;
 4 index_emp index_emp_type ;
 5 BEGIN 
 6     index_emp(1) := e.ename;
 7 SELECT index_emp(1) INTO ename1 FROM emp e WHERE e.empno=7369;
 8 EXECUTE IMMEDIATE select  || index_emp(1) ||  from emp e where e.empno=7369 into ename1  ;
 9 dbms_output.put_line(index_emp(1));
10 dbms_output.put_line(ename1);
11 END; 
12 
13 
14 DECLARE 
15 x VARCHAR2(100) := ename;
16 y VARCHAR2(100) ;
17 BEGIN 
18     SELECT x INTO y FROM emp WHERE empno=7369; 
19     dbms_output.put_Line(y);
20 END; 
21 
22 
23 DECLARE 
24 x VARCHAR2(100) := ename;
25 y VARCHAR2(100) ;
26 BEGIN 
27 EXECUTE IMMEDIATE select  || x ||  from emp where empno=7369 into y  ;
28 dbms_output.put_line(y);    
29 END;
30 
31 
32 
33 SELECT CHR(&1+67) FROM dual ;
34 
35 SELECT &1 FROM emp ;
36 
37 
38 CREATE TABLE  test_coloumn (
39 A  NUMBER ,
40 B NUMBER ,
41 C  NUMBER ,
42 D NUMBER ,
43 E NUMBER ,
44 F NUMBER 
45 ); 
46 
47 TRUNCATE TABLE test_coloumn ;
48 SELECT * FROM test_coloumn ;
49 SELECT CHR(1+67)  FROM test_coloumn WHERE a=1 ;
50 SELECT D  FROM test_coloumn WHERE a=1 
51 
52 DECLARE 
53 X NUMBER ;
54 BEGIN 
55 --    SELECT CHR(1+67) INTO X FROM test_coloumn WHERE a=1 ;
56 --    DBMS_OUTPUT.put_line(X);
57     dbms_output.put_line(CHR(1+67));
58 END;

 

以上是关于oracle 不能是用变量来作为列名和表名 ,但使用动态sql可以;的主要内容,如果未能解决你的问题,请参考以下文章

oraclede中数据定义语言

小写的 HSQLDB 列名和表名

不能在 sql 查询 APEX ORACLE 中使用绑定变量作为表名

Oracle SQL 从执行计划中检索具有表名的列名作为表

oracle中如何对多张表进行动​​态选择查询?使用表名和列名作为其他表的值?

从 PersistEntity/PersistField 映射到 DB 中的列名和表名的规则是啥