Oracle Variable替代品 - 同义词

时间:2010-08-27 09:47:16

标签: sql oracle oracle10g

我想替换oracle中的变量。

var通过SQLPlus传入,使用& 1

引用 我的方案中的

& 1是模式名称 - 这是SQL。

CREATE SYNONYM ACCOUNT FOR &1.ACCOUNT;

假设& 1等于ABC,则创建的synonym用于ABCAccount,而不是ABC.Account。由于某种原因,这段时间被删除了。

任何想法为什么?

2 个答案:

答案 0 :(得分:8)

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

在这种情况下,您需要有一个句点来显示变量的结尾,然后再用另一个来表示它被视为模式:

CREATE SYNONYM ACCOUNT FOR &1..ACCOUNT;

答案 1 :(得分:0)

DECLARE
  schema_name VARCHAR2(30) := '&1';
BEGIN
    EXECUTE IMMEDIATE 'CREATE SYNONYM ACCOUNT FOR ' || schema_name || '.ACCOUNT';
END;
/