Oracle Variable替代品 - 同义词

问题描述 投票:0回答:2

我想替换oracle中的变量。

var通过SQLPlus进入,并使用&1进行引用

我的场景中的&1是模式名称 - 这是SQL。

CREATE SYNONYM ACCOUNT FOR &1.ACCOUNT;

假设&1等于ABC,synonym创建的是ABCAccount,而不是ABC.Account。出于某种原因,该期间被删除。

有什么想法吗?

sql oracle oracle10g
2个回答
8
投票

该期间被视为变量名称的终止。它通常是可选的(例如,当名称后面有空格时),但有时你必须要区分变量和下一位文本。说你其实想结束字符串ABCACCOUNT;如果你有&1ACCOUNT它会提示一个名为1ACCOUNT的变量,这不是你想要的。句点告诉它变量名称的结束位置。

在这种情况下,您需要有一个句点来显示变量的结尾,然后另一个要将它作为模式处理:

CREATE SYNONYM ACCOUNT FOR &1..ACCOUNT;

0
投票
DECLARE
  schema_name VARCHAR2(30) := '&1';
BEGIN
    EXECUTE IMMEDIATE 'CREATE SYNONYM ACCOUNT FOR ' || schema_name || '.ACCOUNT';
END;
/
© www.soinside.com 2019 - 2024. All rights reserved.