我想在oracle
中替换一个变量。
该变量通过SQLPlus
传入,并使用&1进行引用
在我的场景中&1是模式名-这里是SQL。
CREATE SYNONYM ACCOUNT FOR &1.ACCOUNT;
假设&1等于ABC,创建的synonym
是为ABCAccount而不是ABC.Account创建的。由于某种原因,句号被删除了。
你知道为什么吗?
发布于 2010-08-27 19:03:50
句点被视为变量名的终止。它通常是可选的(例如,当名称后面有空格时),但有时您必须使用它来区分变量和下一段文本。假设您实际上想要以字符串ABCACCOUNT
结束;如果您有&1ACCOUNT
,它将提示输入一个名为1ACCOUNT
的变量,这并不是您想要的。句点告诉它变量名的结束位置。
在这种情况下,您需要有一个句点来显示变量的结尾,然后使用另一个句点将其视为模式:
CREATE SYNONYM ACCOUNT FOR &1..ACCOUNT;
发布于 2010-08-27 18:17:54
DECLARE
schema_name VARCHAR2(30) := '&1';
BEGIN
EXECUTE IMMEDIATE 'CREATE SYNONYM ACCOUNT FOR ' || schema_name || '.ACCOUNT';
END;
/
https://stackoverflow.com/questions/3582998
复制相似问题