【发布时间】:2015-03-11 09:38:55
【问题描述】:
我需要将 varchar2(30) 变量转换为在 select 语句中或在应该接收列名的 sql 函数中用作列名。
我该怎么做?
我正在尝试用动态 sql 做一些简单的事情,比如下面的代码,以解决 varchar2 转换的问题,但我无法得到预期的结果。它说“00900. 00000 - 关于 query_string 中的 select 语句的“无效 SQL 语句”。
有人知道这里的错误在哪里吗?
SET serveroutput ON;
declare
TYPE pointer IS REF CURSOR;
yo pointer;
var varchar2(20);
query_string varchar2(200);
num number;
begin
var := 'WORKERS'; --should be the column name!
query_string := 'select'||var||'from MY_TABLE where MY_TABLE.ID = 2';
OPEN yo FOR query_string;
LOOP
FETCH yo into num;
EXIT WHEN yo%NOTFOUND;
dbms_output.put_line(num);
END LOOP;
END ;
/
【问题讨论】:
-
停止做你正在做的事情,选择一本关于关系数据库的书,学习如何做关系数据库,然后重新设计你的数据库,这样你就不需要做任何事情了。
-
什么语言? PL/SQL?检查这个:docs.oracle.com/cd/B10500_01/appdev.920/a96590/adg09dyn.htm
-
SQL 语句中的单词之间需要有空格。看我的回答。