有人可以向我解释一些事情吗?如何显示表格的结构?我跑了select * from table; 当然它会显示表格中的所有内容.但是,我被要求显示表格的结构.这意味着什么,命令是什么?
这是我的下表.
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL>
Run Code Online (Sandbox Code Playgroud) 我正在寻找BLOB和CLOB数据的真正好解释.我正在寻找用简单的英语解释的伟大.
我有这张桌子
create table student (
stu_id int,
s_name nvarchar(max),
s_subject nvarchar(max),
)
Run Code Online (Sandbox Code Playgroud)
这是数据
insert into student values(123,'pammy','English');
insert into student values(123,'pammy','Maths');
insert into student values(123,'pammy','Chemistry');
insert into student values(124,'watts','Biology');
insert into student values(125,'Tom','Physics');
insert into student values(125,'Tom','Computer';
insert into student values(125,'Tom','ED';
Run Code Online (Sandbox Code Playgroud)
所以我想检索已发生两次以上的记录.我的代码是
select stu_id,s_Name
from student
group by stu_id,s_Name
having count(stu_id) >2 ;
Run Code Online (Sandbox Code Playgroud)
结果很完美.
但是当我想要s_subject它时也没有选择任何行.我不知道为什么.
select stu_id,s_Name,s_subject
from student
group by stu_id,s_Name,s_subject
having count(stu_id) >2 ;
Run Code Online (Sandbox Code Playgroud) 我正面临一个非常烦人的问题.我写了(在Notepad ++中)一些SQL脚本.现在,当我尝试通过SQL*Plus(通过命令行,在Windows 7上)执行它们时,我收到的错误就像ORA-00933: SQL command not properly ended.
然后我将脚本复制并粘贴到SQL Developer工作表窗口,点击Run按钮,脚本执行时没有任何问题/错误.
经过长时间的调查,我开始认为SQL*Plus有一些问题,包括一些它不理解的空格(包括换行符和制表符).
由于我假设SQL Developer知道如何摆脱奇怪的空白,我试过这个:将脚本粘贴到SQL Developer工作表窗口中,然后从那里复制并将其粘贴回SQL脚本中.这解决了一些文件的问题,但不是所有文件.有些文件在没有明显原因的地方继续显示错误.
你有过这个问题吗?我该怎么做才能通过SQL*Plus通过命令行运行这些脚本?
更新:
一个脚本示例,该脚本不能与SQL*Plus一起使用但是与SQL Developer一起使用:
SET ECHO ON;
INSERT INTO MYDB.BOOK_TYPE (
BOOK_TYPE_ID, UNIQUE_NAME, DESCRIPTION, VERSION, IS_ACTIVE, DATE_CREATED, DATE_MODIFIED
)
SELECT MYDB.SEQ_BOOK_TYPE_ID.NEXTVAL, 'Book-Type-' || MYDB.SEQ_BOOK_TYPE_ID.NEXTVAL, 'Description-' || MYDB.SEQ_BOOK_TYPE_ID.NEXTVAL, A.VERSION, B.IS_ACTIVE, SYSDATE, SYSDATE FROM
(SELECT (LEVEL-1)+0 VERSION FROM DUAL CONNECT BY LEVEL<=10) A,
(SELECT (LEVEL-1)+0 IS_ACTIVE FROM DUAL CONNECT BY LEVEL<=2) B
;
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
SQL> SQL> SET ECHO ON;
SQL>
SQL> INSERT INTO MYDB.BOOK_TYPE (
2 …Run Code Online (Sandbox Code Playgroud) 我有一些经常运行的脚本,总是来自连接的SQLPlus会话.
我需要一种方法在发生错误时退出脚本,而无需断开或退出SQLPlus本身.100%的情况下,当发生错误时,连接的DBA将需要向会话发出一个或多个命令.的100%的时间,当发生错误时,也有其他的SQLPlus语句(并因此必须是外部的BEGIN..END;)以后,所述脚本不能被执行或可能出现严重问题.
注意:如果您建议WHENEVER SQLERROR EXIT那么您没有阅读上述文本.除了脚本之外,这将断开并退出SQLPlus ,这是不可接受的行为.
在SELECT查询中包含DISTINCT是否意味着应该对结果集进行排序?
我不认为它,但我正在寻找一个权威的答案(网络链接).
我有这样的查询:
Select Distinct foo
From Bar
Run Code Online (Sandbox Code Playgroud)
在oracle中,结果是截然不同的,但不是按排序顺序排列的.在Jet/MS-Access中,似乎还有一些额外的工作要确保结果是排序的.我假设oracle在这种情况下遵循规范并且MS Access已经超越了.
另外,有没有办法可以给表提示它应该排序foo(除非另有说明)?
在SQL PLus中,如果我想在屏幕上隐藏命令,我会在脚本的开头使用:
SET ECHO OFF
Run Code Online (Sandbox Code Playgroud)
但这个命令怎么样?怎么也隐藏这个?
在MS-Dos中你可以在它前面使用@,但是在SQL*Plus中?
编辑:我知道SQL*Plus的-S选项,但问题是我将脚本发送到客户端,因此我无法控制它们如何运行SQL*Plus.
每当我尝试登录SQL*Plus(11g标准版Win 64)时,我都会收到与某些连接错误相关的错误.
我尝试以sysdba身份登录并提供密码.
所有服务都已启动.我在Windows 7上.
任何帮助,将不胜感激.

我知道数据库引擎本身(经常)在另一台机器上并且SQL*Plus没有直接读取这些环境变量的方法,但是我处于一个棘手的情况,我只需要来自机器的环境变量客户端本身正在运行.
有没有办法在一个将在SQL*Plus中运行的单个脚本中将这些值欺骗到SQL*Plus客户端?该脚本由一个开始/结束PL/SQL块组成,但是如果我需要使用set/define/variable排序的SQL*Plus指令,这也不应该是一个问题.
我不能做的是改变SQL*Plus可执行文件本身的启动方式(我没有权限将值作为参数传递).
有没有办法实现这个目标?
注意:dbms_system.get_env()似乎从服务器本身检索环境变量,这是我不想要的.
我想知道是否有可能以sqlplus某种方式获取输出以发现我的数据库是否已启动.
我想在数据库上运行脚本列表,但在此之前,我想知道数据库是否已启动并运行我的脚本.
这是我尝试过的:
sqlplus /@DB1 << EOF
> select 1 from dual;
> EOF
Run Code Online (Sandbox Code Playgroud)
它无法连接,但sqlplus的返回码仍然说"一切正常"!
SQL*Plus: Release 11.2.0.4.0 Production on Mon Nov 28 10:06:41 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-12505: TNS:listener does not currently know of SID given in connect
descriptor
Enter user-name: SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]]
where ::= [/][@]
::= [][/][@]
Enter user-name: ju@srv:/tmp/jcho $ echo $?
0
我知道我可以grep我的测试查询的结果,像这样:
sqlplus /@DB1 << EOF
select 'ALL_GOOD_BOY' from …Run Code Online (Sandbox Code Playgroud)