【发布时间】:2020-06-11 09:58:05
【问题描述】:
我正在尝试执行以下代码。 我将 v_Model_UserName 作为输入。我在 select 语句中使用它。但是在 select 语句中没有输入参数。
SET SERVEROUTPUT ON;
DECLARE
v_Model_UserName VARCHAR2(30) := UPPER('&Model_UserName');
v_role VARCHAR2(3000);
CURSOR v_role1 is
SELECT granted_role from dba_role_privs where grantee = ('v_Model_UserName') ;
BEGIN
OPEN v_role1;
LOOP
FETCH v_role1 INTO v_role;
EXIT WHEN v_role1%NOTFOUND;
dbms_output.put_line(v_role);
END LOOP;
CLOSE v_role1;
END;
/
例如。如果我将 &Mode UserName 指定为 HR,它会以 v_Model_UserName = HR 的形式分配给变量。
但是在游标选择语句中还是一样
"SELECT granted_role from dba_role_privs where grantee =
('v_Model_UserName');"
我希望它是:
"SELECT granted_role from dba_role_privs where grantee = 'HR';"
我也试过给
SELECT granted_role from dba_role_privs where grantee = v_Model_UserName;
这里仍然没有分配 HR 值。
【问题讨论】:
-
我的建议是整齐清晰地布置代码。它将更容易理解、维护和调试。例如
declare、begin和end属于同一层级,循环内容向右缩进一个。
标签: input plsql parameters cursor