2011-02-08 61 views
0

我有一个包含一些代码的sql文件(abc.sql)。我能为@命令在SQL PLUS(OS HP-unix)中不起作用

SQL> run abc.sql 
    1* select 1 from dual 

     1 

SQL> 

但不能使用“@”命令执行运行此使用“运行”命令。如果我使用@执行,它只是返回到SQL提示符而不执行此文件。

SQL> @abc.sql 
SQL> 
SQL> 

您能帮我解决这个问题吗?

仅供参考,我M于HP-UNIX(Tru64 UNIX的V5.1B(2650修订版)使用的是Oracle 8.1.7.4.0

回答

1
您的文件中

确实有

select 1 from dual 
/

你需要告诉SQL引擎后在“编辑”的@类型执行线(/)

编辑

,看看缓冲区说:

SQL> @a.sql 

     1 
---------- 
     1 

SQL> ed 
Wrote file afiedt.buf 

... 

select 1 from dual 
/
+0

最后有“/”,但仍然不起作用。 – 2011-02-08 13:30:41

+0

@Chandra Bhushan更新上面,当你在@abc.sql – Harrison 2011-02-08 13:45:03

1

run不执行文件的内容。而是运行缓冲区的内容。

的实况( http://download.oracle.com/docs/cd/E11882_01/server.112/e16604/ch_twelve037.htm#sthref1803)表示

- [R [UN]

解释并执行当前存储在SQL缓冲区中的SQL命令或PL/SQL块。

缓冲区没有命令历史记录列表并且不记录SQL * Plus命令。

使用

RUN导致SQL缓冲区的最后一行成为当前行。

斜杠命令(/)的功能类似于RUN,但不会在屏幕上的SQL缓冲区中列出该命令。 SQL缓冲区始终包含最后输入的SQL语句或PL/SQL块。


你可能misstaking runstart命令。