如何只扫描代码的特定部分来替换oracle中的变量

时间:2017-02-13 13:19:19

标签: oracle plsql oracle11g

file:Define_variable.sql

DEFINE schema_name = ms

file:insert_data.sql

insert into &schema_name.settings(key,value) values('Email_msg','<html><p>Dear  {First_Name}, {Last_Name}</p><p>{End_user_organization_name} has decided to embrace a new technology. Once enrolled, your Android&#8482; or S<sup>&reg;</sup> </html>')

我需要在表中插入值,但我无法执行此操作。

它要求&amp; reg的值(在html脚本中)。如果我关闭扫描,它不是选择&amp; schema_name,如果我把扫描,它要求html里面的值。有什么办法吗

注意:列值是一个Clob数据并包含一个大的html模板,出于示例目的,我只附上了几个html内容。

2 个答案:

答案 0 :(得分:1)

您可以更改要在替换变量中使用的字符;例如:

SQL> set define @
SQL> define my_variable=value
SQL> select '&my_variable=@my_variable' from dual;
old   1: select '&my_variable=@my_variable' from dual
new   1: select '&my_variable=value' from dual

'&MY_VARIABLE=VALU
------------------
&my_variable=value

答案 1 :(得分:1)

您需要额外.来终止替换变量:

insert into &schema_name..settings (key,value)

替换变量可以选择由.终止,所以如果你想要一个实际的点,那么你需要两个。

btw scan已经过时并且在我记忆中已弃用。使用set define,它还允许您设置不同的前缀字符。