sal

PLSQL——06、存储过程

扶醉桌前 提交于 2020-02-01 00:52:18
练习 1:导入型形式参数(in类型) CREATE OR REPLACE PROCEDURE raise_salary (p_id IN emp.empno%TYPE) IS --变量声明 BEGIN UPDATE emp SET sal = sal * 1.1 WHERE empno = p_id; END raise_salary; / 存储过程的调用: --方法一: EXECUTE raise_salary (7839); --方法二: declare v_empno emp.empno%type :=&p_empno; begin RAISE_SALARY(v_empno); end; / SQL>SHOW ERROR --查看编译错误; 练习 2:导出型形式参数(out类型) CREATE OR REPLACE PROCEDURE query_emp (p_id IN emp.empno%TYPE, p_name OUT emp.ename%TYPE, p_salary OUT emp.sal%TYPE, p_comm OUT emp.comm%TYPE) IS BEGIN SELECT ename, sal, comm INTO p_name, p_salary, p_comm FROM emp WHERE empno = p_id; END query_emp; /

数据库(8)条件查询

不羁岁月 提交于 2020-01-31 15:59:07
8.条件查询 语法格式: select 字段,字符; from 表格; where 条件; 执行顺序 先from 然后where 最后select。 8.1查询工资等于5000的员工姓名? 8.2 查询smith的工资 8.3找出工资高于3000的员工 select ename,sal from emp where sal>=3000; 8.4 找出工资不等于3000的 select ename,sal from emp where sal<>3000; 8.5 找出工资在1100到3000 select ename,sal from emp where sal>=1100 and sal<=3000; select ename,sal from emp where sal between 1100 and 3000; 来源: CSDN 作者: 帅的玩编程 链接: https://blog.csdn.net/weixin_43923223/article/details/104123648

四、oracle子查询

风格不统一 提交于 2020-01-31 15:18:08
目录 4.1.单行子查询 4.2. TopN 查询 4.3. 分页查询 4.4. exists 4.5. 对于 in 和 exists 的性能区别: 4.1.单行子查询 select * from emp where sal > (selectsal from emp where empno = 7566); 子查询空值/多值问题 如果子查询未返回任何行,则主查询也不会返回任何结果 ( 空值)select * from emp where sal > (select sal from emp where empno =8888); 如果子查询返回单行结果,则为单行子查询,可以在主查 询中对其使用相应的单行记录比较运算符 ( 正常)select * from emp where sal > (select sal from emp where empno =7566); 如果子查询返回多行结果,则为多行子查询,此时不允许 对其使用单行记录比较运算符 ( 多值)select * from emp where sal > (select avg(sal) from emp group by deptno);// 非法 多行子查询 select * from emp where sal >any(select avg(sal) from emp group by deptno);

poj3311 TSP经典状压dp(Traveling Saleman Problem)

时间秒杀一切 提交于 2020-01-31 13:01:05
题目链接: http://poj.org/problem?id=3311 题意:一个人到一些地方送披萨,要求找到一条路径能够遍历每一个城市后返回出发点,并且路径距离最短。最后输出最短距离即可。注意:每一个地方可重复访问多次。 经典的状压dp,因为每次送外卖不超过10个地方,可以压缩。 由于题中明确说了两个城市间的直接可达路径(即不经过其它城市结点)不一定是最短路径,所以需要借助floyd首先求出任意两个城市间的最短距离。 然后,在此基础上来求出遍历各个城市后回到出发点的最短路径的距离,即求解TSP问题。 代码: #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; #define ll long long const int maxn=1e5+5; const int INF=0x3f3f3f3f; int dp[1<<11][15]; int d[15][15]; int n; void floyd() ///多源最短路,任意两点之间的距离都是最短的 { for(int k=0; k<=n; k++) for(int i=0; i<=n; i++) for(int j=0; j<=n; j++) d[i][j]=min(d[i][j],d[i]

Hive常规操作-DML操作

橙三吉。 提交于 2020-01-29 07:07:41
加载文件数据到表中 LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] 0: jdbc:hive2://CentOS:10000 > load data local inpath '/root/t_employee' overwrite into table t_employee partition ( deptno = '10' ) ; 查询结果插入表中 将查询结果插入表中 INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] select_statement1 FROM from_statement; --覆盖 INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement;--追加 { "EMPNO" : 7369 , "ENAME" : "SMITH" , "JOB" : "CLERK" ,

plsql中的procedure和function编程

可紊 提交于 2020-01-28 05:31:15
procedure:存储过程 eg: create or replace procedure p --这儿是和plsql的区别 is cursor c is select * from emp2 for update; --v_temp c%rowtype; begin for v_temp in c loop if(v_temp.sal< 2000) then update emp2 set sal=sal*2 where current of c ; elsif(v_temp.sal = 5000) then delete from emp2 where current of c; end if; end loop; commit; end; 执行过程的命令:exec p; begin p end; 带参数的存储过程; create or replace procedure p --in表示传入参数 out传出参数, (v_a in number,v_b number ,v_ret out number,v_temp in out number) is begin if(v_a > v_b) then v_ret := v_a; else v_ret := v_b; end if; v_temp := v_temp+1; end; 调用过程: declare v_a

oracle PLSQL、游标、存储过程、触发器

僤鯓⒐⒋嵵緔 提交于 2020-01-27 00:51:21
文章主目录 PL/SQL 游标 存储过程 触发器 回到顶部 PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言 , PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言。我们知道SQL语言是没有分支和循环的,而PL语言是为了补充SQL语言的, 是带有了分支和循环的语言 。 PL/SQL 语法 基本数据类型声明 declare v_name varchar2(20); v_temp number(1); v_count binary_integer := 0; v_sal number(7,2) := 4000.00; v_date date := sysdate; v_pi constant number(3,2) := 3.14; v_valid boolean := false; v_name varchar2(20) not null := 'myname'; declare开头声明变量,v_name表示变量名字,通常以v_xxx这种格式命名变量,varchar2(20)表示变量类型, :=为赋值操作符 。 在 PL/SQL里面boolean类型变量在定义的时候一定要给初始值,Oracle 里面的put_line()不能打印boolean类型的值。 %type 属性声明 还有一种声明变量的方法:使用 %type属性。 declare

04hive查询

∥☆過路亽.° 提交于 2020-01-26 11:51:36
详细文档查看: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select 一. 基本查询(SELECT …FROM) 1. 全表和特定列查询 select * from emp; select empno, ename from emp; 注意: (1)SQL 语言大小写不敏感。 (2)SQL 可以写在一行或者多行 (3)关键字不能被缩写也不能分行 (4)各子句一般要分行写。 (5)使用缩进提高语句的可读性 列别名:重命名一个列 ;便于计算 ;紧跟列名,也可以在列名和别名之间加入关键字‘AS’。 select ename AS name, deptno dn from emp; 2. 算术运算符 查询出所有员工的薪水后加 1 显示。 select sal +1 from emp; 3. 常用函数 1) 求总行数(count) hive (default)> select count(*) cnt from emp; 2) 求工资的最大值(max) hive (default)> select max(sal) max_sal from emp; 3) 求工资的最小值(min) hive (default)> select min(sal) min_sal from emp; 4) 求工资的总和

Oracle Sql 胡乱记

时间秒杀一切 提交于 2020-01-26 11:20:37
/ Oracle查询优化改写 / --1、coalesce 返回多个值中,第一个不为空的值 select coalesce('', '', 's') from dual; --2、order by -----dbms_random.value 生产随机数,利用随机数对查询结果进行随机排序 select * from emp order by dbms_random.value; --指定查询结果中的一列进行排序 select * from emp order by 4; -----order by 中认为null是最大所以null会排在第一或者最后一个 -----可以利用 nulls first 或者 nulls last 对null进行排序处理 select * from emp order by comm nulls first; select * from emp order by comm nulls last; ----- 多列排序,job 降序排列,如果工作一样,按照工号升序排列 select * from emp order by job desc, empno asc; ------依次按照job,empno降序排序 select * from emp order by job, empno desc; ------将empno = 7934 的排在第一位

关于Oracle用select对工资分等级的问题

依然范特西╮ 提交于 2020-01-26 07:44:32
关于Oracle用select对工资分等级的问题 按工资写出员工的工资等级:>= 3000 为 A, >= 2000 为 B, >= 1000 为C, <1000 为D, 使用CASE语句,显示员工名,工资等级 Select ename , SAL, CASE when sal>=3000 then ‘A’ when sal>=2000 then ‘B’ when sal>=1000 then ‘C’ ELSE ‘D’ END 工资等级 FROM scott.emp; 来源: CSDN 作者: 知识点记录 链接: https://blog.csdn.net/qq_40587720/article/details/104029691