数据库Oracle与Mysql语法对比:变量赋值
来源:互联网 发布:手机淘宝店铺红包链接 编辑:程序博客网 时间:2024/04/30 06:34
Oracle
PL/SQL程序的基本单元是块(BLOCK),块就是实现一定功能的逻辑模块。一个PL/SQL 程序由一个或多个块组成。块有固定的结构,也可以嵌套。一个块可以包括三个部分,每个部分由一个关键字标识。
块中各部分的作用解释如下:
(1) DECLARE:声明部分标志。
(2) BEGIN:可执行部分标志。
(3) EXCEPTION:异常处理部分标志。
(4) END;:程序结束标志。
在以下的训练中,将使用函数 DBMS_OUTPUT.PUT_LINE 显示输出结果。 DBMS_OUTPUT 是 Oracle 提供的包,该包有如下三个用于输出的函数,用于显示 PL/SQL
程序模块的输出信息。
第一种形式:
DBMS_OUTPUT.PUT(字符串表达式);
用于输出字符串,但不换行,括号中的参数是要输出的字符串表达式。
第二种形式:
DBMS_OUTPUT.PUT_LINE(字符串表达式);
用于输出一行字符串信息,并换行,括号中的参数是要输出的字符串表达式。
第三种形式:
DBMS_OUTPUT.NEW_LINE;
用来输出一个换行,没有参数。
调用函数时,在包名后面用一个点“.”和函数名分隔,表示隶属关系。
SET SERVEROUTPUT ON DECLARE --声明部分标识 v_job VARCHAR2(9); v_count BINARY_INTEGER DEFAULT 0; v_total_sal NUMBER(9,2) := 0; c_tax_rate CONSTANT NUMBER(3,2) := 8.25; v_valid BOOLEAN NOT NULL := TRUE; BEGIN v_job:='MANAGER'; --在程序中赋值 DBMS_OUTPUT.PUT_LINE(v_job); --输出变量 v_job 的值 DBMS_OUTPUT.PUT_LINE(v_count); --输出变量 v_count 的值 DBMS_OUTPUT.PUT_LINE(v_date); --输出变量 v_date 的值 DBMS_OUTPUT.PUT_LINE(c_tax_rate); --输出变量 c_tax_rate 的值 END; 执行结果:
Mysql
把查询结果赋值到变量,大部分情况下使用游标来完成,但是如果明确知道查询结果只有一行(例如统计记录的数量,某个字段求和等),其实可以使用set或into的方式来实现赋值。示例代码:
drop table if exists test_tbl;create table test_tbl (name varchar(20), status int(2));insert into test_tbl values('abc', 1),('edf', 2),('xyz', 3);drop procedure IF EXISTS pro_test_3;delimiter //create procedure pro_test_3()begin-- 方式 1 DECLARE cnt INT DEFAULT 0; select count(*) into cnt from test_tbl; select cnt;-- 方式 2 set @cnt = (select count(*) from test_tbl); select @cnt;-- 方式 3 select count(*) into @cnt1 from test_tbl; select @cnt1;-- 多个列的情况下似乎只能用 into 方式 select max(status), avg(status) into @max, @avg from test_tbl; select @max, @avg;end//delimiter ;call pro_test_3();
例:
求斐波那契数列的和S并输出。S=F(0)+F(1)+F(2)…+F(k),其中F(0)=0,F(1)=1,…F(n)=F(n-1)+F(n-2)(n>=2),k是emp表中工资(sal)小于3000的雇员总数(用查询语言得到)。
DELIMITER $$ drop procedure if exists Fibonacci$$CREATE PROCEDURE Fibonacci() BEGIN DECLARE i INT DEFAULT 2; declare f int default 0; declare a int default 0; declare b int default 1; declare s int default 0; declare k int default 0; select count(empno) into kfrom empwhere sal <3000;select k; WHILE i <= k DO set f = a+b; set a = b; set b = f; set s =s + f; set i =i + 1 ; END WHILE; SELECT k,s+1 AS result; END$$call Fibonacci();
- 数据库Oracle与Mysql语法对比:变量赋值
- 数据库Oracle与Mysql语法对比:函数
- 数据库Oracle与Mysql语法对比:触发器
- MySQL与Oracle 语法对比
- 数据库Oracle与Mysql语法对比:集合运算
- 数据库Oracle与Mysql语法对比:联结(Join)
- 数据库Oracle与Mysql语法对比:分支结构
- 数据库Oracle与Mysql语法对比:循环结构
- 数据库Oracle与Mysql语法对比:选择结构
- 数据库Oracle与Mysql语法对比:存储过程
- MySQL与Oracle的语法区别对比
- Mysql与Oracle存储过程语法对比
- mysql与oracle的语法对比
- MySql数据库语法对比
- 数据库Oracle与Mysql语法对比:组函数的嵌套使用
- oracle与mysql数据库函数对比
- MySQL变量赋值需要注意其与Oracle的区别
- MySQL与Oracle的语法区别详细对比
- 纯css实现Tab切换的两种方法
- ubuntu下的/var/cache/apt/archives文件夹;用apt-get命令下载的deb软件包
- MySQL存储过程
- iOS线程的同步异步问题
- 冬天
- 数据库Oracle与Mysql语法对比:变量赋值
- zTree插件和layer弹出层结合进行添加,删除,修改操作时,针对出现调用父父页面方法出现问题,解决方法
- mysql 免安装版本安装服务器
- CSS3:制作3D旋转导航综合练习题
- 在一个webview里跳转到新的activity里,webview无法响应js事件的问题
- Android Studio CMakeLists.txt文件配置
- RN1.学习记录开篇
- 说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
- ios:修改tabbar或者navgationBar背景色和图标选中颜色