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;
时间: 2024-08-24 09:27:29

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

Sqlserver通过列名查表名

1 select a.name 表名,b.name 列名 from sysobjects a,syscolumns b 2 where a.id=b.id and b.name='SortCode' and a.type='U'

oracle 中如何查询当前用户可以看到的表名、表对应的所有字段

前言:利用 oracle 的视图来查询表的相关信息. oracle 查询当前用户下的表名 + 表注释 select t.table_name tableName, f.comments comments from user_tables t inner join user_tab_comments f on t.table_name = f.table_name oracle 查询某表的所有字段 + 字段注释 + 字段类型 SELECT t.TABLE_NAME tableName, t.COL

oracle中关于替代变量,accpt,绑定变量,字符变量

此文档介绍两个事情,一个是替代变量,另一个就是了解一下硬解析和软解析对于变量来说declare定义的好还是variable定义的好 在oracle 中,对于一个提交的sql语句,存在两种可选的解析过程, 一种叫做硬解析,一种叫做软解析.一个硬解析需要经解析,制定执行路径,优化访问计划等许多的步骤.硬解释不仅仅耗费大量的cpu,更重要的是会占据重要的们闩(latch)资源,严重的影响系统的规模的扩大(即限制了系统的并发行),而且引起的问题不能通过增加内存条和cpu的数量来解决.之所以这样是因为门闩

[转]oracle存储过程、声明变量、for循环

oracle存储过程.声明变量.for循环 1.创建存储过程 create or replace procedure test(var_name_1 in type,var_name_2 out type) as --声明变量(变量名 变量类型) begin --存储过程的执行体 end test; 打印出输入的时间信息 E.g: create or replace procedure test(workDate in Date) is begin dbms_output.putline(&ap

Oracle 数据库的绑定变量特性及应用

Oracle 数据库的绑定变量特性及应用[-----]转载自https://www.cnblogs.com/rootq/(原地址) 关键词: 绑定变量(binding variable),共享池(shared buffer pool), SGA(system global area); 在开发一个数据库系统前,有谁对Oracle 系统了解很多,尤其是它的特性,好象很少吧;对初学者来讲,这更是不可能的事情;仅仅简单掌握了SQL的写法,就开始了数据库的开发,其结果只能是开发一个没有效率,也没有可扩展

oracle存储过程、声明变量、for循环|转|

oracle存储过程.声明变量.for循环 1.创建存储过程 create or replace procedure test(var_name_1 in type,var_name_2 out type) as --声明变量(变量名 变量类型) begin --存储过程的执行体 end test; 打印出输入的时间信息 E.g: create or replace procedure test(workDate in Date) is begin dbms_output.putline(&ap

oracle&&Sqlserver获取表名列名主键及数据类型

SQlserver获得列名,列类型,列类型长度,scale,prec等数据类型(syscolumns,systypes,sysobjects均为视图) select a.name as colname, b.name as typename,a.length as length,a.scale as scale,a.prec as prec from syscolumns a,systypes b ,sysobjects c where a.xusertype=b.xusertype and a

SQLSERVER和ORACLE系统表获取表名 列名以及列的注释

在工作中从数据库取的数据要导出来,但是发现导出的EXCEL中列名都是字段名(英文),为此搜集资料怎么把字段名变为中文名称,而发现ORACLE和SQLSERVER(用的SQLSERVER2008R2)又有所不同,具体如下: SQLSERVER数据库: 系统表: ---获取表的相关信息              select * from SYS.OBJECTS  (说明:name:表名 object_id:表的ID)  ---获取列的相关信息 select * from SYS.COLUMNS (

oracle存储过程、声明变量、for循环

oracle存储过程.声明变量.for循环  1.创建存储过程 create or replace procedure test(var_name_1 in type,var_name_2 out type) as --声明变量(变量名 变量类型) begin --存储过程的执行体 end test; 打印出输入的时间信息 E.g: create or replace procedure test(workDate in Date) is begin dbms_output.putline(&a