【发布时间】:2015-07-20 13:21:17
【问题描述】:
我编写了一个 SQL 过程,其中我编写了一个游标,每次我必须动态地将表名传递给游标查询。
create or replace
PROCEDURE Add_DEN as
v_TableName VARCHAR2(4000) := 'BO_USER_DATA';
cursor c_DEN is select * from BO_USER_DATA; // Want to pass dynamically ,now hardcoded
r_DEN c_DEN%ROWTYPE;
fetch c_DEN into r_DEN;
v_Name := r_DEN."Name";
我可以这样写吗
cursor c_DEN is "select * from " || v_TableName;
有什么帮助吗?
【问题讨论】:
-
您确定您已正确标记此问题吗?因为
create or replace、varchar2、:=和%ROWTYPE都不能在 SQL Server 中工作。 -
代码示例不是T-SQL
-
你真的需要光标吗?有几次应该使用游标,但在不需要游标时会非常频繁地使用它们。几乎在您进行 DML 的任何时候都不需要光标。
-
@Damien_The_Unbeliever 这是 PL SQL 。因为我们在 Oracle 上使用 SQL 开发人员执行此操作。
-
阅读有关 EXECUTE IMMEDIATE 和/或 DBMS_SQL 包的信息。
标签: plsql cursor oracle-sqldeveloper plsqldeveloper