Oracle SQL * Plus将at符号@
解释为run a SQL script的命令。
我有一个.sql
脚本,其中包含评论中的@
字符,例如:
create or replace package mypkg
as
/*
Procedure foo
@param bar blah blah blah
*/
procedure foo(bar varchar2);
end mypkg;
/
如何禁用at符号的处理?我已经在使用SET DEFINE OFF
和SET SQLPREFIX OFF
来禁用不需要的元字符处理。
答案 0 :(得分:4)
有几种方法可以禁用START命令(包括@和@@命令)。
一种方法是在PRODUCT_USER_PROFILE(实际上是SYSTEM.PRODUCT_PRIVS的同义词)中放置一个适当的条目。为此,执行类似于
的INSERTINSERT INTO PRODUCT_USER_PROFILE
(PRODUCT, USERID, ATTRIBUTE, CHAR_VALUE)
VALUES
('SQL*Plus', 'DUMMY', 'START', 'DISABLED')
这要求您使用的用户ID在PRODUCT_USER_PROFILE上具有INSERT权限。
第二种方法是在启动SQL * Plus时使用参数为3的-RESTRICT选项。这可能更简单,但是您可能需要启用-RESTRICT 3禁用其他命令,例如SPOOL。有关详情,请参阅this page标题为“RESTRICT Option”的部分。
分享并享受。
答案 1 :(得分:2)
我多年来一直使用这种评论符号,所以我很惊讶这是一个问题。 我使用包“pldoc”http://sourceforge.net/projects/pldoc/?source=directory来生成文档。评论的标准方式是这样的(如javadoc):
create or replace package mypkg
as
/**
* Procedure foo
*
* @param bar blah blah blah
*/
procedure foo(bar varchar2);
end mypkg;
/
me@XE> @mypkg.sql
Package created.