my_query varchar2(6000);
my_query:='select * from'||v1;
EXECUTE IMMEDIATE my_query;
my_query:='select * from'||v1;
EXECUTE IMMEDIATE my_query;
解决方案 »
- oracle 安装问题
- RMAN CATALOG的 问题
- PLSQL如何快速打出select * from
- 请问ORACLE中,system,sys,root,sysdba,这4种用户的默认密码是什么,如果忘记了如何找到他们,我现在就忘记了,可我都不知道怎么找到。谢
- access 导入oracle ??
- 触发器问题,急,在线等候
- 菜鸟问:在创建视图(view)的语句里面,可以使用用户自己开发的函数或者存储过程吗?
- 如何建表的关键字段
- execute一个procedure,老是提示我权限不足,已经授了execute_catelog的权限?
- 错误1053(在线等)
- 我的这一动态sql怎么会出编译错误呢?
- 求教:在oracle里触发器里写游标的语法
begin
execute immediate 'select * from '|| v1;
end;
这样写队吗?
v1,v2,v3是我在汉数里定义的,in_a是函数输入参数。
函数编译时没问题,可是测试时却不对
DECLARE
sql_stmt VARCHAR2(200);
plsql_block VARCHAR2(500);
emp_id NUMBER(4) := 7566;
salary NUMBER(7,2);
dept_id NUMBER(2) := 50;
dept_name VARCHAR2(14) := 'PERSONNEL';
location VARCHAR2(13) := 'DALLAS';
emp_rec emp%ROWTYPE;
BEGIN
EXECUTE IMMEDIATE 'CREATE TABLE bonus (id NUMBER, amt NUMBER)';
sql_stmt := 'INSERT INTO dept VALUES (:1, :2, :3)';
EXECUTE IMMEDIATE sql_stmt USING dept_id, dept_name, location;
sql_stmt := 'SELECT * FROM emp WHERE empno = :id';
EXECUTE IMMEDIATE sql_stmt INTO emp_rec USING emp_id;
plsql_block := 'BEGIN emp_pkg.raise_salary(:id, :amt); END;';
EXECUTE IMMEDIATE plsql_block USING 7788, 500;
sql_stmt := 'UPDATE emp SET sal = 2000 WHERE empno = :1
RETURNING sal INTO :2';
EXECUTE IMMEDIATE sql_stmt USING emp_id RETURNING INTO salary;
EXECUTE IMMEDIATE 'DELETE FROM dept WHERE deptno = :num'
USING dept_id;
EXECUTE IMMEDIATE 'ALTER SESSION SET SQL_TRACE TRUE';
END;
谢谢,我知道动态sql的大致情况了。
可我上面的程序应该也没问题阿?
编译通过,select ... from dual测试时却出错。
请指点。
AS
TYPE myrctype IS REF CURSOR;
END pkg_test;
/
create function f1(v1 char)
return pkg_test.myrctype
as
p_rc pkg_test.myrctype;
begin
open p_rc for select * from v1;
end;
/
本身动态SQL是比较独立,所以里面的INTO后的变量,不是外面的变量。
应该
STRSQL := 'select re,svt_no,saving_num from '|| in_d ||' where acc='||in_a;
execute immediate STRSQL INTO V1,V2,V3;