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可以;的主要内容,如果未能解决你的问题,请参考以下文章
不能在 sql 查询 APEX ORACLE 中使用绑定变量作为表名