oracle - 如何从函数插入单引号以在选择语句中调用
问题描述
我正在尝试为 VPD 编写一个函数,以阻止用户根据他们正在运行的主机/机器运行选择查询。我认为我的大部分功能都已关闭,但我一生都无法弄清楚如何将我的变量放入单引号中。我需要它在引号中,以便我可以针对具有允许连接列表的表运行 select 语句(例如 - select * from table where v_host = 'host';)。
这是迄今为止我尝试过的变体之一,但我已经进行了其他几次尝试,我觉得我有点头疼:
declare
v_host VARCHAR2(100);
v_host2 VARCHAR2(100);
begin
v_host := q'[SYS_CONTEXT('USERENV','HOST')]';
dbms_output.put_line(v_host);
end;
/
解决方案
这是你要找的吗?
SQL> declare
2 v_host VARCHAR2(100);
3 v_host2 VARCHAR2(100);
4 begin
5 v_host := SYS_CONTEXT('USERENV','HOST');
6 dbms_output.put_line(v_host);
7
8 v_host2 := chr(39) || v_host || chr(39);
9 dbms_output.put_line(v_host2);
10 end;
11 /
LITTLEFOOT
'LITTLEFOOT'
PL/SQL procedure successfully completed.
SQL>
如果是这样,我做了什么?连接v_host
到单引号 ( chr(39)
)。
推荐阅读
- symfony - 如何使用 symfony/mailer 和 symfony/mailgun-mailer 提供商标记电子邮件
- python - 求数效率平方根的算法
- javascript - 动画总是触发,因为状态总是在 React 中滚动时发生变化
- vuejs2 - vee-validate 3 的有效格式是什么?
- android - 如何在改造中解析 Restfull api JSON 响应?
- mongodb - 聚合一个 MongoDB 数组只返回多个元素数组
- typescript - 如何使用 jest 在模拟响应中获取响应状态?
- sql-server - SQL 语法 1.* 这是什么意思?
- java - TestContainers PostgreSQLContainer 与 Kotlin 单元测试:“没有足够的信息来推断类型变量 SELF”
- javascript - 函数对象和 ES 模块的作用域问题