select servid into aa from tablea a where a.id='111';
aa查出来是'222'select * from tableb b where b.id=aa; --执行报错
若select * from tableb b where b.id=‘222’;--执行成功请问要如何实现
select * from tableb b where b.id=aa;
要分开写,不要写在一个语句内实现,譬如下面这样
select * from tableb b where b.id in (select servid from tablea a where a.id='111')
aa查出来是'222'select * from tableb b where b.id=aa; --执行报错
若select * from tableb b where b.id=‘222’;--执行成功请问要如何实现
select * from tableb b where b.id=aa;
要分开写,不要写在一个语句内实现,譬如下面这样
select * from tableb b where b.id in (select servid from tablea a where a.id='111')
select * from tableb b where b.id=aa; --执行报错这两个语句,只能出现在 过程 、函数中 或匿名块中。第二个语句,你查询完以后,要做什么 操作呢 ?
select * from tableb b where b.id=aa; --执行报错 ,目前要根据aa的值做查询,aa是变量就无法实现,aa是‘111’就可以执行
DECLARE
AA TABLEA.SERVID%TYPE;
V_SQLSTMT VARCHAR2(300);
BEGIN
SELECT SERVID INTO AA FROM TABLEA A WHERE A.ID = '111'; V_SQLSTMT := 'SELECT * FROM tableb b WHERE b.id=:aa';
EXECUTE IMMEDIATE V_SQLSTMT
USING AA;
END;
或者用游标遍历来输出所有的结果集4L用动态SQL语句可以编译成功但是并不会输出任何结果,只是会提示过程已成功完成,想输出结果还是得用游标。