请问Oracle数据库存储过程中:=是什么意思

jee1987vip 2010-01-19 11:00:04
能举例说明吗,谢谢大家
...全文
1589 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
happyzhang2007 2011-12-16
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 jinglingqaz 的回复:]
:= 赋值的意思区别于java的 =
|| 连接意思区别于java的 +
[/Quote]
+1
SambaGao 2010-01-20
  • 打赏
  • 举报
回复
看来楼主是刚学习sql 我也正在学。可以的话。一起学吧。
Hemes_MC 2010-01-20
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sxq129601 的回复:]
赋值
[/Quote]

来拿分的
sxq129601 2010-01-20
  • 打赏
  • 举报
回复
赋值
fan123123 2010-01-20
  • 打赏
  • 举报
回复
5 SQL*PLUS报表功能
SQL*PLUS的一些基本格式命令
column deptno heading department

column ename heading name

column sal heading salary

column sal format $99,999.00

ttitle sample report for|hitech corp

btitle strictly confidential

break on deptno

compute sum of sal on deptno

run

表头和表尾
ttitle sample report for|hitech corp
btitle right strictly confidential

“|”表示换行,结尾不必加分号
选项有三种:left right center

使用TTITLE,系统将自动地在每页的顶部显示日期和页号。
TTITLET和BTITLE命令有效,直至重新设置表头或表尾,或退出SQL*PLUS。

下面命令使标题语句失效
TTITLE OFF
BTITLE OFF

列名
column命令定义用于显示列名
若名字为一个单词,不必加引号
column ename heading employee

column ename heading 'employee|name'
(|为换行)

取消栏定义
column ename clear

列的格式
column ename format A15

column sal format $9,999.99

column comm like sal

like子句,使得某一列的格式参照另一列格式,它拷贝列名及其格式

控制记录显示分组顺序
break on deptno
(不显示重复值)

select deptno,ename
from emp
order by deptno;
(ORDER BY子句用于控制BREAK)

显示为
10 clark
niller
20 smith
scott
30 allen
blake

每次只有一个BREAK命令起作用,但一次可以在多个列上使用BREAK命令
break on 列名1 on 列名2

记录分组
break on deptno skip 2
select deptno,ename
from emp
order by deptno;

每个deptno之间空两行
clear break(取消BREAK命令)
break on page(每次从一新页开始)
break on report(每次从一新报表开始)
break on page on report(联合使用)

分组计算
break on deptno skip 2
compute sum of sal on deptno
计算每个部门的工资总和
skip子句使部门之间的信息分隔开

其他计算命令
compute avg of sal on deptno(平均值)
count 非空值的总数
MAX 最大值
MIN 最小值
STD 标准偏差
VAR 协方差
NUMBER 行数

使compute命令失效
一旦定义了COMPUTE,则一直有效,直到
关闭COMPUTE(clear compute)

SQL/PLUS环境命令
show 选项
(显示当前参数设置情况)

show all(显示全部参数)

设置参数
set 选项 值或开关

set autocommit on

SET命令包括
set autocommit {off|on|immediate}
(自动提交,OFF缺省)

set echo {off|on}
(命令文件执行,是否在终端上显示命令本身,OFF缺省)

set feedback {off|on}
(ON:查询结束时,给出结果,记录数的信息,缺省;
OFF:无查询结果,记录数的信息)

set heading {off|on}
(ON:列的头标在报表上显示,缺省;OFF:不在报表上显示)

set linesize {n}
一行显示的最大字符数,缺省为80

set pagesize {n}
每页的行数,缺省是14

set pause {off|on|text}
(ON:当报表超过一页时,每显示一屏就暂停显示,等待用户打回车键,再接着显示;
OFF:页与页不停顿,缺省;text:页与页停顿,并向用户提示信息)

SET BUFFER buffer
设置当头的命令缓冲区,通常情况下,SQL命令缓冲区已为当前缓冲区。
由于SQL命令缓冲区只能存放一条SQL命令,
所以可用其它缓冲区来存放SQL命令和SQL*PLUS命令。

经常用到的设置可放在login.sql文件中。

SET NULL
set null 'no data'

select ename,comm
from emp
where deptno=30;
把部门30中无佣金雇员的佣金显示为“NO DATA”。

set null是SQL*PLUS命令,用它来标识空值(NULL),可以设置为任意字符串。

存盘命令SAVE
save 文件名

input
1 select empno,ename,job
2 from emp
3 where job='analyst'

save research

目录中会增加一个research.sql文件。

编辑命令EDIT
edit

EDIT编辑当前缓冲区中的内容。

编辑一个文件
edit research

调入命令GET
get research
把磁盘上的文件内容调入缓冲区,并显示在屏幕上,文件名尾不必加.sql。

START命令
运行指定的文件
start research

输出命令SPOOL
spool tryfile
不仅可以使查询结果在屏幕上显示,还可以使结果存入文件

停止向文件输出
spool off

把查询结果在打印机上输出,先把它们存入一个文件中,
然后不必使用SPOOL OFF,而用:
spool out
SPOOL OUT关闭该文件并在系统缺省的打印机上输出

制作报表举例
edit tryfile

set echo off
set autocommit on
set pagesize 25
insert into emp (empno,ename,hiredate)
values(9999,'geiger',sysdate);
insert into emp (empno,ename,deptno)
values(3333,'samson',20);
spool new_emp
select * from emp
where deptno=20
or deptno is null
/
spool off
set autocommit off

用start命令执行这个文件

--------
6 函数
字符型函数
initcap(ename);将ename中每个词的第一个字母改为大写。
如:jack smith--Jack Smith

length(ename);计算字符串的长度。

substr(job,1,4);

其它
lower
upper
least 取出字符串列表中按字母排序排在最前面的一个串
greatest 取出字符串列表中按字母排序排在最后的一个串

日期函数
add_month(hiredate,5) 在雇佣时间上加5个月
month_between(sysdate,hiredate) 计算雇佣时间与系统时间之间相差的月数
next_day(hiredate,'FRIDAY') 计算受雇日期之后的第一个星期五的日期


select ename,sal,next_day(sysdate,'FRIDAY') as_of
from emp
where deptno=20;
(as_of是别名)

如果不用to_char函数,日期在ORACLE中的缺省格式是'DD_MON_YY'
to_char(date,date picture)

select ename,to_char(hiredate,'Dy Mon dd,yyyy') hired
from emp
where deptno=10;

to_date(字符串,格式)

insert into emp(empno,ename,hiredate)
values(7999,'asms',to_date('070387083000','MMDDYYHHMISS'));

日期型数据的格式
dd 12
dy fri
day friday
ddspth twelfth

mm 03
mon mar
month march

yy 87
yyyy 1987


Mar 12,1987 'Mon dd,yyyy'
MAR 12,1987 'MON dd,yyyy'
Thursday MARCH 12 'Day MONTH dd'
Mar 12 11:00am 'Mon dd hh:miam'
Thu,the twelfth 'Dy,"the"ddspth'

算术函数
least(v1,v2)

select ename,empno,mgr,least(empno,mgr) lownum
from emp
where empno0

trunc(sal,0)
取sal的近似值(截断)

空值函数
nvl(v1,v2)
v1为列名,如果v1不是空值,nvl返回其列值。
v1为空值,返回v2的值。

聚组函数
select sum(comm)
from emp;
(返回一个汇总信息)
不能把sum用在select语句里除非用group by

字符型、日期型、数字型的聚组函数
min max count可用于任何数据类型

select min(ename)
from emp;

select min(hiredate)
from emp;

select min(sal)
from emp;

有多少人有工作?
select count(job)
from emp;

有多少种不同的工种?
select count(distinct job)
from emp;

count distinct 计算某一字段中不同的值的个数

其它聚组函数(只用于数字型数据)
avg 计算平均工资
select avg(sal)
from emp;

stddev 计算工资的平均差
select stddev(sal)
from emp;

sum 计算总工资
select sum(sal)
from emp;

group by子句
select deptno,sum(sal),avg(sal)
from emp
group by deptno;

按多个条件分组
每个部门的雇员数
select deptno,count(*)
from emp
group by deptno;

每个部门的每个工种的雇员数
select deptno,job,count(*)
from emp
group by deptno,job;

满足条件的分组
(where是针对select的,having是针对group by的)
哪些部门的工资总和超过了9000
select deptno,sum(sal)
from emp
group by deptno
having sum(sal)>9000;

select小结
除去职员,哪些部门的工资总和超过了8000
select deptno,sum(sal)
from emp
where job!='clerk'
group by deptno
having sum(sal)>8000
order by sum(sal);
fan123123 2010-01-20
  • 打赏
  • 举报
回复
SQL命令的编辑
list or l 显示缓冲区的内容
list 4 显示当前SQL命令的第4行,并把第4行作为当前行,在该行号后面有个*。
change or c 用新的内容替换原来在一行中第一次出现内容
SQL>c/(...)/('analyst')/
input or i 增加一行或多行
append or a 在一行后追加内容
del 删除当前行 删除SQL缓冲区中的当前行
run 显示并运行SQL缓冲区中的命令
/ 运行SQL缓冲区中的命令
edit 把SQL缓冲区中的命令写到操作系统下的文本文件,
并调用操作系统提供的编辑器执行修改。

-------------
3 数据操纵
数据的插入
insert into dept
values (10,'accounting','new york');

insert into dept (dname,deptno)
values ('accounting',10);

从其它表中选择插入数据
insert into emp (empno,ename,deptno)
select id,name,department
from old_emp
where department in(10,20,30,40);

使用参数
insert into dept
values(&deptno,&dname,&loc);
执行时,SQL/PLUS对每个参数将有提示用户输入

参数对应日期型或字符型数据时,可在参数上加引号,输入时就可不用引号
insert into dept
values(&deptno,'&dname','&loc');

插入空值(NULL)
insert into dept
values(50,'education',null);

插入日期型数据
日期型数据缺省格式:DD-MON-YY
insert into emp
(empno,ename,hiredate)
values(7963,'stone','07-APR-87');

系统时间:SYSDATE
insert into emp
(empno,ename,hiredate)
values(7600,'kohn',SYSDATE);

数据更新
update emp
set job='manager'
where ename='martin';

update emp
set job='market rep'
where ename='salesman';

update emp
set deptno=40,job='market rep'
where job='salesman';

数据删除
delete emp
where empno=765;

更新的提交
commit

自动提交方式
set autocommit on
如果状态设为开,则使用inesrt,update,delete会立即提交。

更新取消
rollback

两次连续成功的commit之间的操作,称为一个事务

---------------
4 创建基表、视图
创建基表
create table dept
(deptno number(2),
dname char(14),
loc char(13));

数据字典会自动更新。
一个基表最多254列。

表名列名命名规则:
限制
第一个字符必须是字母,后面可任意(包括 $ # _ 但不能是逗号)。
名字不得超过30个字符。

唯一
某一用户的基表名必须唯一,不能是ORACLE的保留字,同一基表的列名互不相同。

使用双引号
如果表名用双引号括起来,则可不满足上述规则;
只有使用双引号,才能区别大、小写;
命名时使用了双引号,在以后的操作也必须使用双引号。

数据类型:
char(n) (不得超过240字符)
number(n,d)
date
long (最多65536字符)
raw (二进制原始数据)

空值处理
有时要求列值不能为空
create table dept
(deptno number(2) not null,
dname char(14),
loc char(13));

在基表中增加一列
alter table dept
add (headcnt number(3));

修改已有列属性
alter table dept
modify dname char(20);
注:只有当某列所有值都为空时,才能减小其列值宽度。
只有当某列所有值都为空时,才能改变其列值类型。
只有当某列所有值都为不空时,才能定义该列为not null。
例:
alter table dept modify (loc char(12));
alter table dept modify loc char(12);
alter table dept modify (dname char(13),loc char(12));

创建视图
create view managers as
select ename,job,sal
from emp
where job='manager';

为视图列名取别名
create view mydept
(person,title,salary)
as select ename,job,sal
from emp
where deptno=10;

with check option选项
使用with check option,保证当对视图插入或更新数据时,
该数据必须满足视图定义中select命令所指定的条件。
create view dept20 as
select ename,job,sal,deptno
from emp
where deptno=20
with check option;
在做下述操作时,会发生错误
update dept20
set deptno=30
where ename='ward';

基表、视图的拷贝
create table emp2
as select * from emp;

基表、视图的删除
drop table 表名
drop view 视图名
fan123123 2010-01-20
  • 打赏
  • 举报
回复
一、SQL PLUS
1 引言

SQL命令
以下17个是作为语句开头的关键字:
alter drop revoke
audit grant rollback*
commit* insert select
comment lock update
create noaudit validate
delete rename
这些命令必须以“;”结尾
带*命令句尾不必加分号,并且不存入SQL缓存区。

SQL中没有的SQL*PLUS命令
这些命令不存入SQL缓存区
@ define pause
# del quit
$ describe remark
/ disconnect run
accept document save
append edit set
break exit show
btitle get spool
change help sqlplus
clear host start
column input timing
compute list ttitle
connect newpage undefine
copy

---------
2 数据库查询

数据字典
TAB 用户创建的所有基表、视图和同义词清单

DTAB 构成数据字典的所有表

COL 用户创建的基表的所有列定义的清单

CATALOG 用户可存取的所有基表清单

select * from tab;

describe命令 描述基表的结构信息
describe dept

select *
from emp;

select empno,ename,job
from emp;

select * from dept
order by deptno desc;

逻辑运算符
= !=或<> > >= < <=
in
between value1 and value2
like
%
_
in null
not
no in,is not null

谓词in和not in
有哪些职员和分析员
select ename,job
from emp
where job in ('clerk','analyst');

select ename,job
from emp
where job not in ('clerk','analyst');

谓词between和not between
哪些雇员的工资在2000和3000之间
select ename,job,sal from emp
where sal between 2000 and 3000;

select ename,job,sal from emp
where sal not between 2000 and 3000;

谓词like,not like
select ename,deptno from emp
where ename like 'S%';
(以字母S开头)
select ename,deptno from emp
where ename like '%K';
(以K结尾)
select ename,deptno from emp
where ename like 'W___';
(以W开头,后面仅有三个字母)
select ename,job from emp
where job not like 'sales%';
(哪些雇员的工种名不以sales开头)

谓词is null,is not null
没有奖金的雇员(即commision为null)
select ename,job from emp
where comm is null;

select ename,job from emp
where comm is not null;

多条件查询
select ename,job
from emp
where deptno=20
and job!='clerk';

表达式
+ - * /

算术表达式
选择奖金高于其工资的5%的雇员
select ename,sal,comm,comm/sal from emp
where comm>.05*sal
order by comm/sal desc;

日期型数据的运算
add two days to 6-Mar-87
6-Mar-87 + 2 = 8-Mar-87
add two hours to 6-Mar-87
6-Mar-87 + 2/24 = 6-Mar-87 and 2hrs
add 15 seconds to 6-Mar-87
6-Mar-87 + 15/(24*60*60) = 6-Mar-87 and 15 secs

列名的别名
select ename employee from emp
where deptno=10;
(别名:employee)
select ename,sal,comm,comm/sal "C/S RATIO" from emp
where comm>.05*sal
order by comm/sal desc;
zhangwonderful 2010-01-20
  • 打赏
  • 举报
回复
就是赋值的功能
Comer 2010-01-20
  • 打赏
  • 举报
回复
赋值
Future_Hui_ 2010-01-20
  • 打赏
  • 举报
回复


加油 。。




gerrynj 2010-01-20
  • 打赏
  • 举报
回复
up
duqiangcise 2010-01-20
  • 打赏
  • 举报
回复
相当于java中的:
int i=2;
jinglingqaz 2010-01-20
  • 打赏
  • 举报
回复
:= 赋值的意思区别于java的 =
|| 连接意思区别于java的 +
kingkingzhu 2010-01-20
  • 打赏
  • 举报
回复
赋值 接分
jee1987vip 2010-01-19
  • 打赏
  • 举报
回复
谢谢大家
Phoenix_99 2010-01-19
  • 打赏
  • 举报
回复
为变量,常量赋值符号
suiziguo 2010-01-19
  • 打赏
  • 举报
回复
为变量/常量赋值符号。

declare
v_id number;
v_name varchar2(16);
c_status CONSTANT char(1) := '1';

begin
v_id := 777;
v_name := 'AC米兰';
……
end;
zhengde007 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 suiziguo 的回复:]
为变量/常量赋值符号。

declare
  v_id      number;
  v_name    varchar2(16);
  c_status  CONSTANT char(1) := '1';

begin
  v_id := 777;
  v_name := 'AC米兰';
  ……
end;
[/Quote]
正解
zhengde007 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 jee1987vip 的回复:]
能举例说明吗,谢谢大家
[/Quote]
正解
源码链接: https://pan.quark.cn/s/0f7c75cb3aad ### MIPI Video Mode 与 Command Mode 的差异 #### 一、引言 MIPI (Mobile Industry Processor Interface) 是一种用于连接移动设备处理器及其外围设备的标准化接口。MIPI 接口支持多种协议,其包含 DSI (Display Serial Interface) 和 DCS (Display Control Interface) 等协议。在 MIPI 接口的应用,主要涉及两种工作模式:Video Mode(视频模式)和 Command Mode(命令模式)。本文旨在系统性地阐述这两种模式的工作机制、特性以及实际应用环境。 #### 二、LCD RAM 概念说明 在进一步探讨 MIPI 的两种模式之前,有必要对文提及的“LCD RAM”概念进行明确。实际上,“LCD RAM”并非一个通用术语,而是本文作者用来描述 LCD 控制器用于存储显示数据的内存区域。LCD(Liquid Crystal Display,液晶显示屏)通常配备一个控制 IC(Integrated Circuit,集成电路),该控制 IC 可能内置 RAM 以缓存显示数据。 #### 三、MIPI Video Mode(视频模式) **定义:** - 视频模式是一种类似于传统 RGB 接口的工作模式,它要求主机持续不断地向显示器传输刷新数据。 - 在这种模式下,数据和控制信号以报文的形式通过 MIPI 总线进行传输。 - 显示器本身无需配备帧缓冲器,因为主机会周期性地刷新屏幕。 **特点:** 1. **实时性高:** 主机需要不...
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 在电磁模拟技术,CST(Computer Simulation Technology)是一种被广泛采纳的软件工具,它主要用于电磁场、微波、天线以及射频系统的设计工作。本资料将详细分析CST软件离散端口的具体配置方法,这些方法对于提升仿真结果的精确度和专业水准具有决定性作用。离散端口在CST软件扮演着模拟信号输入或输出的重要角色,它们构成了仿真模型不可或缺的部分。在配置离散端口时,一个核心的原则是保证端口的方向与网格线保持一致,这是因为这样做能够有效降低计算过程产生的误差,并确保仿真数据的有效性。如果未能遵循这一指导原则,可能会引发未知的计算问题,进而导致仿真结果失去可靠性。 在CST软件配置离散端口,通常需要借助“Pick Points”这一功能。通过选择“Pick Edge Center”选项,端口将被设定在模型边缘的心位置上。然而,这种做法并不总是能够确保端口与网格线保持平行。在某些特定情形下,模型的几何构造可能不允许直接选取一个与网格线平行的边作为端口的安装位置。 为了克服这一挑战,可以采用多种不同的策略。如果模型本身已经包含一条与馈电口平行的边,那么可以直接利用这条边来建立端口,此时CST软件会自动调整端口使其与网格线对齐。另一种可选的方法是,当模型不具备现成的平行边时,用户可以手动构建一个几何结构,比如一个立方体,并使其边缘与馈电口平行。通过这种方式,新建立的几何结构的边缘就可以作为端口的位置,从而确保端口与网格线的平行关系。 在实施上述操作时,必须关注端口尺寸的合理性和物理意义的一致性。端口的尺寸应当依据实际天线馈电部分的尺寸进行适当调整,过大的端口或...
代码下载链接: https://pan.quark.cn/s/a4b39357ea24 【使用TensorFlow进行图像识别】 图像识别作为计算机视觉领域的关键任务之一,其核心在于通过算法解析和理解图像所包含的信息。在此资源,我们将集探讨如何借助功能强大的深度学习框架TensorFlow来执行手写数字识别。手写数字识别构成了众多实际应用的基础,例如自动支票处理、光学字符识别(OCR)等场景。 TensorFlow是由Google创建的一个开源库,它主要用于数值运算和机器学习,尤其在深度学习方面表现卓越。其核心优势在于可以构建并训练复杂的神经网络架构,并且在多种硬件环境实现高效执行,涵盖CPU和GPU平台。 在此实践项目,我们将运用TensorFlow来构建一个卷积神经网络(CNN)模型,这种架构是处理图像数据的理想选择。CNNs通过模仿人脑视觉皮层的运作机制,能够自主地提取图像的关键特征,进而达成识别目标。在手写数字识别的特定情境下,这些特征可能涉及笔画的几何形态、走向以及相互间的连接模式。 对于CNN的基础结构,我们需要具备相应的认知,其通常由卷积层、池化层、全连接层以及激活函数等部分组成。卷积层借助滤波器(亦称卷积核)对图像进行扫描,以捕捉局部特征;池化层则用于降低数据维度,同时保留核心信息;全连接层将特征向量映射至各类别的概率分布;而激活函数如ReLU则通过引入非线性元素,使模型能够学习更为复杂的模式。 在此案例,建议采用MNIST数据集,这是一个广泛用于手写数字识别的标准测试集。该数据集包含60,000个训练样本和10,000个测试样本,每个样本均为28x28像素的灰度图像,代表0到9这十个数字的某一个。为了训练模型,必须首先加载数据,并...

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧