免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3666 | 回复: 8
打印 上一主题 下一主题

[求助] 請問ORACLE 中 /代表意義? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-29 15:06 |只看该作者 |倒序浏览
您好:
請問 在ORACLE 中,有一個「/」 ,他有何意義?


例如:
declare num   number;
begin
      select count(1) into num from all_tables where TABLE_NAME = 'BS' and OWNER='WHC';
      if   num=1   then
          execute immediate 'drop table BS';
      end   if;
end;
/
--创建表
CREATE TABLE BS (dept_id number(2), dept_name varchar(14) ,locat varchar2(13) );

謝謝!

论坛徽章:
17
天蝎座
日期:2014-03-10 14:35:04数据库技术版块每日发帖之星
日期:2015-12-13 06:20:00IT运维版块每日发帖之星
日期:2015-12-13 06:20:00数据库技术版块每日发帖之星
日期:2015-10-20 06:20:00数据库技术版块每日发帖之星
日期:2015-08-21 06:20:00数据库技术版块每日发帖之星
日期:2015-06-17 22:20:002015年迎新春徽章
日期:2015-03-04 09:57:092015年辞旧岁徽章
日期:2015-03-03 16:54:15技术图书徽章
日期:2015-01-12 17:05:35亥猪
日期:2014-11-09 13:05:04金牛座
日期:2014-09-25 11:28:54处女座
日期:2014-09-15 19:58:36
2 [报告]
发表于 2014-08-29 15:33 |只看该作者
本帖最后由 jackson198574 于 2014-08-29 15:36 编辑

回复 1# hartball38


    表示执行缓冲区内的语句或者存储过程。

官方解释:

/ (slash)

Syntax

/(slash)

Executes the most recently executed SQL command or PL/SQL block which is stored in the SQL buffer.

The buffer has no command history and does not record SQL*Plus commands.

Usage

You can enter a slash (/) at the command prompt or at a line number prompt of a multi-line command, or in the input area of the iSQL*Plus Workspace.

The slash command functions similarly to RUN, but does not list the command.

Executing a SQL command or PL/SQL block using the slash command will not cause the current line number in the SQL buffer to change unless the command in the buffer contains an error. In that case, SQL*Plus changes the current line number to the number of the line containing the error.

Examples

Type the following SQL script:

SELECT CITY, COUNTRY_NAMEFROM EMP_DETAILS_VIEWWHERE SALARY=12000;


Enter a slash (/) to re-execute the command in the buffer:
/

CITY                           COUNTRY_NAME
------------------------------ ----------------------------------------
Seattle                        United States of America
Oxford                         United Kingdom
Seattle                        United States of America

论坛徽章:
0
3 [报告]
发表于 2014-08-29 17:07 |只看该作者
謝謝您的回覆!

论坛徽章:
0
4 [报告]
发表于 2014-08-29 21:36 |只看该作者
本帖最后由 hartball38 于 2014-09-02 09:33 编辑

回复 2# jackson198574


    您好:
想再請教,一般在SQL DEVELOPER 等下語法時,
「;」 就是表執行這一段.

比如
insert ...;
insert ...;
他會依序寫入資料

那何時會用到 緩衝 呢?

又比如
declare num   number;
begin
      select count(1) into num from all_tables where TABLE_NAME = 'BS' and OWNER='WWW';
      if   num=1   then
          execute immediate 'drop table BS';
      end   if;
end;
/
--创建表
CREATE TABLE BS (dept_id number(2), dept_name varchar(14) ,locat varchar2(13) );

我用【/】,可以執行完CREATE 語法
但沒用【/】,卻不可執行完CREATE 語法

我有於END後有加「;」,他應該會執行才對吧?

謝謝!

论坛徽章:
7
天蝎座
日期:2013-08-16 23:19:32丑牛
日期:2014-01-08 09:20:14寅虎
日期:2014-01-11 11:03:44午马
日期:2014-04-28 11:02:40天秤座
日期:2014-05-16 23:24:24摩羯座
日期:2014-07-20 10:46:04卯兔
日期:2014-08-08 15:21:41
5 [报告]
发表于 2014-08-30 17:06 |只看该作者
执行

论坛徽章:
0
6 [报告]
发表于 2014-09-01 08:59 |只看该作者
您好:
請問您是說, 執行語法時,會用到緩衝嗎?
那請問 造成緩衝的條件為何呢?為何 有些會直接執行,有些要用/ 來執行緩衝?

謝謝!

论坛徽章:
17
天蝎座
日期:2014-03-10 14:35:04数据库技术版块每日发帖之星
日期:2015-12-13 06:20:00IT运维版块每日发帖之星
日期:2015-12-13 06:20:00数据库技术版块每日发帖之星
日期:2015-10-20 06:20:00数据库技术版块每日发帖之星
日期:2015-08-21 06:20:00数据库技术版块每日发帖之星
日期:2015-06-17 22:20:002015年迎新春徽章
日期:2015-03-04 09:57:092015年辞旧岁徽章
日期:2015-03-03 16:54:15技术图书徽章
日期:2015-01-12 17:05:35亥猪
日期:2014-11-09 13:05:04金牛座
日期:2014-09-25 11:28:54处女座
日期:2014-09-15 19:58:36
7 [报告]
发表于 2014-09-01 10:00 |只看该作者
回复 6# hartball38

1.会用到缓存-----SQL Buffer,里面会存储最近执行的一整条SQL语句或者是PL/SQL(不包含sql plus的命令)。
2.想要查看缓存中缓存的内容,执行list命令即可。
3.语句可以直接执行,也可以用缓存区的,如果重复执行内容相同的命令的话,使用 / 符号执行命令会很方便,比如切换redo log和查询某条信息的状态更新,缓存区的内容也可以通过一些简单的命令去做简单的调整,可以节省编辑整条语句的时间。当然你也可以使用自己习惯的文本编辑器编辑好之后再贴进去。


   

论坛徽章:
0
8 [报告]
发表于 2014-09-02 09:47 |只看该作者

您好:
謝謝您,不過想確認一下:
1.您說的 一整条SQL语句或者是PL/SQL,是指
SQL: select  ,create 等
PL/SQL:declare 等 嗎?

2.list 似乎只在SQL PLUS 裡面執行有結果, 若在SQL DEVELOPER 裡面執行 沒有結果.
   而list顯示出來的語法,只有最近 1 筆而已.

3.重複執行用「/」,似乎也只有在 SQL PLUS 有效...

這樣對嗎?
謝謝!

论坛徽章:
17
天蝎座
日期:2014-03-10 14:35:04数据库技术版块每日发帖之星
日期:2015-12-13 06:20:00IT运维版块每日发帖之星
日期:2015-12-13 06:20:00数据库技术版块每日发帖之星
日期:2015-10-20 06:20:00数据库技术版块每日发帖之星
日期:2015-08-21 06:20:00数据库技术版块每日发帖之星
日期:2015-06-17 22:20:002015年迎新春徽章
日期:2015-03-04 09:57:092015年辞旧岁徽章
日期:2015-03-03 16:54:15技术图书徽章
日期:2015-01-12 17:05:35亥猪
日期:2014-11-09 13:05:04金牛座
日期:2014-09-25 11:28:54处女座
日期:2014-09-15 19:58:36
9 [报告]
发表于 2014-09-02 10:06 |只看该作者
回复 8# hartball38


    1.基本对,PL/SQL的话declare是可选的,带有begin和end的一般就是PL/SQL,内容还可能包含判断和循环。
  
    2.SQL developer没用过,应该会有相应的地方执行或者是相应的功能。

    3.在客户端工具里,所有命令都可以在类似sql编辑窗口中编辑和保留,这种情景就不用"/"了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP