我在 TOAD for Oracle 工作,并尝试在我的编码中使用变量替换。
我已经能够让变量替换在按 F5 的代码体中工作:
Define Value = '1.5'
Create table XX_DELETEMEEE as Select
percent * To_Number('&&Value') Test
from Source_Table;
我一直无法使变量以与表名或列名相同的方式用于文本:
Define PROJECT = 'P747'
Create table XX_DELETEMEEE as Select
percent (To_CHAR('&&Project'))
from Source_Table;
此代码的错误将“百分比”作为无效标识符。
Define PROJECT = 'P747';
Create table &&Project||_MU as Select
percent
from Source_Table;
此代码的错误将表名作为无效选项。
关于如何在不偏离方法论的情况下完成这项工作的任何想法?
define/&是一种简单的文本替换机制,对sql一无所知。而sql和Oracle数据库服务器对文本处理机制一无所知。因此,'define/&'substitutuin 产生的文本必须是有效的 sql 语句。否则你会得到一个错误。
不是有效的 sql 语句。
是有效的陈述,所以
像 &&Project 这样的变量名必须后跟一个空格或文件结尾或一个点 (.)。变量替换后删除点。
将不起作用,因为变量是 &&Project_MU 而不是 &&Project。
您将 Toad 编辑器 ('define/&) 中的简单文本替换与 sql 字符串函数(to_char、||)混在一起。那是不同的事情。