SQL语句、PL/SQL块和SQL*Plus命令之间的区别

SQL语句、PL/SQL块和SQL*Plus命令之间的区别

 

原文链接:https://blog.csdn.net/liuzhushiqiang/article/details/12320941  

SQL*Plus中可以处理三种类型的命令:SQL语句PL/SQL块SQL*Plus命令,但三者之间是有区别的。

1)SQL语句以数据库为操作对象的语言,主要包括数据定义语言DDL数据操纵语言DML数据控制语言DCL以及数据存储语言DSL。当输入SQL语句后,SQL*Plus将其保存在内部缓冲区中
  当SQL命令输入完毕时,有三种方法可以结束SQL命令在命令行的末尾输入分号(;)并按回车在单独一行上用斜杠(/)或用空行表示。 
2)PL/SQL块同样是以数据库中的数据为操作对象。但由于SQL不具备过程控制功能,所以,为了能够与其他语言一样具备面向过程的处理功能,在SQL中加入了诸如循环、选择等面向过程的处理功能,由此形成了PL/SQL。所有PL/SQL语句的解释均由PL/SQL引擎来完成。使用PL/SQL块可编写过程、触发器和包等数据库永久对象
3)SQL*Plus命令主要用来格式化查询结果、设置选择、编辑及存储SQL命令、以设置查询结果的显示格式,并且可以设置环境选项

  eg:accept 、 prompt 

pl/sql 是oracle的一门语言,它包括标准SQL,oracle扩展SQL,oracle自定义函数,存储过程,触发器,包... 
而sql*plus是运行解释pl/sql的程序,你可以在sql*plus里运行sql语句。 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
打个比方 
pl/sql -> C++语言 
sql*plus -> Microsoft Visual C++ 6.0编译器

pl/sql 是oracle的扩展SQL后的语言,它包括标准SQL,oracle扩展SQL,oracle自定义函数,存储过程,触发器,包... 
而sql*plus是运行解释pl/sql的程序,你可以在sql*plus里运行sql语句,是实现用户对数据库系统进行管理的一种工具!

SQL是一种结构化查询语言,所有的数据库查询都是这种语言。 
而T-SQL即:Transact-SQL是对上述语言的一种再加工,使之更加完美,实用。 
例如:oracle和sqlserver的语言就有所不一样。

SQL是一种结构化查询语言,相当于一个标准,T-SQL是其中的一种,可移植性不高。

SQL是标准,但各个厂商可能对标准加工加入自己的函数、类型等等。
比如MS 的T-SQL ORACLE的PL/SQL

--sqlplus中accept变量和prompt文本:

SQL> set serveroutput on
SQL> accept num prompt '请输入一个数字';
请输入一个数字6
SQL> declare
  2  pnum number:=#
  3  begin
  4  if pnum = 0 then dbms_output.put_line('你输入的是0');
  5  elsif pnum = 1 then dbms_output.put_line('你输入的是1');
  6  else dbms_output.put_line('你输入的是其他数字');
  7  end if;
  8  end;
  9  /--必须以/、空行结束
old   2: pnum number:=#
new   2: pnum number:=6;
??????????????????

PL/SQL procedure successfully completed.

SQL>

在navicat下使用sqlplus:

1.在navicat for oracle客户端中安装sqlplus,先下载windowns all的sqlplus,basic+sqlplus;

2.navicat for oracle客户端->工具->命令列界面->选择sqlplus安装目录的sqlplus.exe打开,即可进行sqlplus语句了。

以指定格式显示:

--修改session中的编码格式:
SQL> ALTER SESSION SET NLS_LANGUAGE= 'SIMPLIFIED CHINESE';
--执行参数和值的显示格式
SQL> col PARAMETER format a30;
SQL>  col VALUE format a30;
SQL> select * from v$NLS_PARAMETERS;

PARAMETER                      VALUE
------------------------------ ------------------------------
NLS_LANGUAGE                   AMERICAN
NLS_TERRITORY                  AMERICA
NLS_CURRENCY                   $
NLS_ISO_CURRENCY               AMERICA
NLS_NUMERIC_CHARACTERS         .,
NLS_CALENDAR                   GREGORIAN
NLS_DATE_FORMAT                DD-MON-RR
NLS_DATE_LANGUAGE              AMERICAN
NLS_CHARACTERSET               AL32UTF8
NLS_SORT                       BINARY
NLS_TIME_FORMAT                HH.MI.SSXFF AM

PARAMETER                      VALUE
------------------------------ ------------------------------
NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY              $
NLS_NCHAR_CHARACTERSET         AL16UTF16
NLS_COMP                       BINARY
NLS_LENGTH_SEMANTICS           BYTE
NLS_NCHAR_CONV_EXCP            FALSE

19 rows selected.

 

posted @ 2018-11-08 15:22  celineluo  阅读(1486)  评论(0编辑  收藏  举报