下面是小编为大家收集的SQL 存储过程基础语法之一,本文共7篇,仅供参考,欢迎大家阅读,一起分享。本文原稿由网友“emmmm”提供。
篇1:SQL 存储过程基础语法之一
-11-11教你轻松学会SQL Server记录轮班的技巧
-09-09系统存储过程sp_MSforeachtable和sp_MSforeachdb使用说明
2009-05-05sql server中的decimal或者numeric的精度问题
2013-01-01获取数据库中两个时间字段的相差天数及ABS/DATEDIFF函数应用
-08-08SqlServer表死锁的解决方法分享
-07-07SQLServer中汇总功能的使用GROUPING,ROLLUP和CUBE
-10-10sqlserver只有MDF文件恢复数据库的方法
2008-07-07SQL Server中选出指定范围行的SQL语句代码
-06-06数据库复制性能测试 推送模式性能测试
2009-12-12sql 分组查询问题
篇2:SQL 存储过程基础语法之一
最近更 新
SQL查询连续号码段的巧妙解法
sqlserver中比较一个字符串中是否含含另一
格式导致的Excel导入sql出现异常的解决方
SQL Server 数据库实用SQL语句
SQL Server 向临时表插入数据示例
SQL Server手工插入标识列的方法
深入sql server 万能分页存储过程的
SQL里面用自定义Split完成个性化需求
同一个sql语句 连接两个数据库服务器
用一句SQL解决SQL中断号问题 推荐
热 点 排 行
SQL Server 2008图文安装教程
SQL Server 2012 安装图解教程(附
sqlserver中distinct的用法(不重
SQL Server导入、导出、备份数据
SQL语句去掉重复记录,获取重复记
SQL Server数据库入门学习总结
SQL Server错误代码大全及解释(
sql convert函数使用小结
sql 时间函数 整理的比较全了
用SQL语句添加删除修改字段、一些
篇3:SQL存储过程返回值
SQL存储过程返回值
先靠一下自己,
当我做多了ORACLE时,我就忘了SQL的储存过程可以返回数据集这个事实了。
。。。。。。。。。。。。。。。。
Create procedure test
@t1 int,
@t2 nvarchar(200) out
as
set t2='这个是输出参数';
go
调用
declare @out_t2 nvarchar(200);
exec test 1,@out_t2;
select @out_t2;
输出:
这个是输出参数
-----
也可以定义一个接收参数,接收存储过程的成功与否的默认返回值(这会是一个整数,0 是无错误执行,其它数为错误代码!)
declare @val int;
declare @out_t2 nvarchar(200);
exec @val = test 1,@out_t2;
select @out_t2,@val;
除了这些简单参数,存储过程还可以直接返回一个数据集
create table table_2( i_key int,i_value varchar(20));
declare @d int;
set @d=1;
WHILE @d<10
begin
insert into table_2 select @d+1,cast(@d as varchar(50))+'S';
set @d = @d+1;
end;
Create procedure test
@t1 int
as
select * from table_2;
go
执行:
exec test 1;
结果,就是table_2表的集合.
作者 akuoma
篇4:sql编程&&存储过程
sql编程&&存储过程
sql 结构化查询语言
是一种编程语言 用于管理数据库的编程语言
元素:
数据
数据类型
变量的数据类型 就是字段的数据类型
变量
字段名就是变量
自定义变量
为了区分用户变量和系统变量 需要在用户变量前增加 @ 标志
set 变量名 = 变量值 set 是专门给变量赋值的语句 set @who = 'gwyy'; 查看自定义变量 select @who; set @a = (select count(*) from t1); 甚至给set赋值语句都可以是一条sql语句 select into 方法注入变量 select 字段列表 表达式 into 变量列表 select 19,29,39 into @a,@b,@c; 把3个数字注入到3个变量里面 select name from t1 where id = 1 into @d; 把查询结果注入到变量里面 select into var 要求只能返回一个记录 select 方式给变量赋值 select @a := 'gwyy'; 也可以这么写 set @a := 'gwyy';
变量有效期
会话结束就消失 连接结束
作用域 用户定义的是全局的 函数内可用 作用于是重叠的 但是mysql也存在局部作用域变量 在函数内部定义 的
函数
内置函数
数值函数Abs(X),绝对值abs(-10.9) = 10Format(X,D),格式化千分位数值 format(1234567.456, 2) = 1,234,567.46Ceil(X),向上取整ceil(10.1) = 11Floor(X),向下取整floor (10.1) = 10Round(X),四舍五入去整Mod(M,N) M%N M MOD N求余10%3=1Pi,获得圆周率Pow(M,N) M^NSqrt(X),算术平方根Rand(),随机数 select floor(rand() *5 +5);TRUNCATE(X,D) 截取D位小数时间日期函数Now(),current_timestamp(); 当前日期时间Current_date();当前日期current_time();当前时间Date(‘yyyy-mm-dd HH;ii:ss’);获取日期部分Time(‘yyyy-mm-dd HH;ii:ss’);获取时间部分Date_format(‘yyyy-mm-dd HH;ii:ss’,’ %D %y %a %d %m %b %j');Unix_timestamp();获得unix时间戳From_unixtime();//从时间戳获得时间字符串函数LENGTH (string ) //string长度,字节CHAR_LENGTH(string) //string的字符个数SUBSTRING (str, position [,length ]) //从str的position开始,取length个字符REPLACE (str,search_str ,replace_str ) //在str中用replace_str替换search_strINSTR (string ,substring ) //返回substring首次在string中出现的位置CONCAT (string [,... ]) //连接字串CHARSET(str) //返回字串字符集LCASE (string ) //转换成小写LEFT (string ,length ) //从string2中的左边起取length个字符LOAD_FILE (file_name) //从文件读取内容LOCATE (substring , string [,start_position] ) //同INSTR,但可指定开始位置LPAD (string ,length ,pad ) //重复用pad加在string开头,直到字串长度为length lpad(1,3,0) 在1前面补3个0LTRIM (string ) //去除前端空格REPEAT (string ,count ) //重复count次RPAD (string ,length ,pad) //在str后用pad补充,直到长度为lengthRTRIM (string ) //去除后端空格STRCMP (string1 ,string2 ) //逐字符比较两字串大小流程函数:CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END 多分支IF(expr1,expr2,expr3) 双分支,
sql编程&&存储过程
。聚合函数Count()Sum();Max();Min();Avg();Group_concat()其他常用函数Md5();Default();用户自定义函数
函数名
参数列表
函数体
返回值
语法:
新建:
Create function function_name (参数列表) returns 返回值类型
函数体
函数名,应该合法的标识符,并且不应该与已有的关键字冲突。
一个函数应该属于某个数据库,可以使用db_name.funciton_name的形式执行当前函数所属数据库,否则为当前数据库。
参数部分,由参数名和参数类型组成。
返回值类类型
函数体由多条可用的mysql语句,流程控制,变量声明等语句构成。
多条语句应该使用 begin end语句块包含。
注意,一定要有return 返回值语句。
函数参数
参数 同样需要确定类型
可以有多个参数
函数内部定义局部变量declare i int default 0;删除:Drop function if exists function_name;查看:Show function status like ‘partten’Show create function function_name;修改:Alter function function_name 函数选项,DEMO最简单的函数 输出 hello worlddelimiter $$ create function sayhello() returns varchar(20) begin return 'hello world'; end$$delimiter ;稍微复杂的 算出现在是不是晚上delimiter $$ create function fun1() returns varchar(20) begin -- hour 可以获得当前时间的小时部分 if hour(now()) >=18 then return '晚安'; else return '早'; end if; end$$delimiter ;
测试循环delimiter $$drop function if exists fun2$$ create function fun2() returns varchar(20) begin set @i = 1; set @num = 0; w:while @i<=10 doif @i =5 then -- 如果循环到了5就退出整个循环-- set @i = @i+1;leave w;end if;set @i = @i+1;set @num = @num + @i; end while w; return @num; end$$delimiter ;带参数的delimiter $$drop function if exists sayhello$$ create function sayhello(name varchar(10)) returns varchar(20) begin return concat( 'hello',name); end$$delimiter ;学号函数delimiter $$drop function if exists sayhello$$ create function sno(c_id int) returns char(20) begin declare s_no char(10); declare class_name char(10); select stu_no from join_student where chass_id = c_id into s_no if isnull(s_no) then -- 没有学生 返回001 select c_name from join_class where id = c_id into class_name ; return concat(class_name,'001'); else -- 有的话 最大值+1 return concat(class_name, lpad(right(s_no,3) +1 ,3,'0'));end if; end$$delimiter ;
控制流程
分支
if 条件1 then
条件1满足语句
else if 条件2 then
条件2满足的语句
else
都不满足的语句
End if;
循环
while 条件 do
循环体
循环的提前终止
break 相当于 mysql里面的 leave退出整个循环
continue 没有 但是有 iterate 退出当前循环
注意 不是根据 leave 和 iterate 的位置来跳出的 而是根据循环标签来跳出的
给循环起个名字 :
标签 : while
end while 标签
运算符
算数运算符 + - * /
逻辑运算符 and or not !
关系运算符 >< >= <= == != = ===
注释
行注释 # -- 块注释 /* xxx */
结束符
默认是; 也可以是 \\g 也可以是 \\G 当然 ;和\\g是一样的 \\G是分组显示 \\g和\\G是命令行独有的
除此之外 我们还可以用 delimiter 来修改语句结束符 delimiter $$
存储过程
存储过程 类似于一个函数 就是把一段sql 语句 封装成一个整体 当要使用的时候 可以调用这个存储过程来实现
在封装的语句体里面 可以用 if else case while 等控制结构
列也可以当成变量来看 所以 存储过程 可以当成一个程序来看 可以进行 sql编程
查看现有的存储过程Show procedure status;删除存储过程Drop procedure 存储过程名称;写一个存储过程Create procedure p1()Begin Select * from g;End$调用存储过程 Call p1();
存储过程和函数的区别 一个名字不同 一个 没有return 其他都一样
篇5:Sql server教程SQL存储过程和算法存储过程
代码还在完善中
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[t]
GO
CREATE TABLE [dbo].[t] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[lid] [nvarchar] (50) ,
[name] [nvarchar] (50) ,
[type] [int] NOT NULL
)
GO
insert into t (lid,[name],[type])
select “11”,“城站火车站”,0
union all select “11”,“葵巷建国路口”,0
union all select “11”,“菜市桥”,0
union all select “11”,“潮鸣寺巷”,0
union all select “11”,“宝善桥建国路口”,0
union all select “11”,“宝善桥”,0
union all select “11”,“市体育馆”,0
union all select “11”,“武林广场”,0
union all select “11”,“武林门”,0
union all select “11”,“武林们马塍路口”,0
union all select “11”,“八字桥”,0
union all select “11”,“浙大西溪校区”,0
union all select “11”,“庆丰村”,0
union all select “11”,“教工路口”,0
union all select “11”,“花园新村”,0
union all select “11”,“浙江工商大学”,0
union all select “11”,“电子科技大学”,0
union all select “11”,“翠苑新村”,0
union all select “57”,“大关小区”,0
union all select “57”,“通信市场”,0
union all select “57”,“德胜新村”,0
union all select “57”,“潮王路口”,0
union all select “57”,“朝晖五区”,0
union all select “57”,“朝晖三区”,0
union all select “57”,“西湖文化广场东”,0
union all select “57”,“武林广场”,0
union all select “57”,“武林小广场”,0
union all select “57”,“半道红”,0
关 键 字:MYSQL
篇6:一些SQL Server存储过程参数及例子
-04-04SQL 时间类型的模糊查询
-08-08巧妙的自关联运用
-11-11SQL命令大全-中英文对照
2009-06-06SQL Server 不存在或访问被拒绝(转)
-06-06MSSQL转MYSQL,gb2312转utf-8无乱码解决方法
2012-08-08SQL Server 总结复习(一)
-03-03oracle,mysql,SqlServer三种数据库的分页查询的实例
2012-04-04SQLServer 跨库查询实现方法
-09-09sqlserver获取当前日期的最大时间值
2013-03-03sql语句之数据操作介绍
篇7:一些SQL Server存储过程参数及例子
最近更 新
没有sa密码无法集成windows身份验证登录的
SQL中WHERE变量IS NULL条件导致全表扫描问
sqlserver常用命令行操作(启动、停止、暂
为数据库生成某个字段充填随机数的存储过
SQL判断字段列是否存在的方法
Sql学习第一天――SQL 将变量定义为Table
MsSQL数据导入到Mongo的默认编码问题(正确
MSSQL优化之探索MSSQL执行计划(转)
SQL Server中通过reverse取某个最后一次出
查询存储过程中特定字符的方法
热 点 排 行
SQL Server 2008图文安装教程
SQL Server 2012 安装图解教程(附
sqlserver中distinct的用法(不重
SQL Server导入、导出、备份数据
SQL语句去掉重复记录,获取重复记
SQL Server数据库入门学习总结
SQL Server错误代码大全及解释(
sql convert函数使用小结
sql 时间函数 整理的比较全了
用SQL语句添加删除修改字段、一些
教你SQLSERVER扩展存储过程XPCMDSHELL的简单应用
- 一个基于ROWNUMBER的通用分页存储过程代码2022-12-19
- 一次性压缩Sqlserver中所有库日志的存储过程2022-12-16
- 前段时间写的一个关于成本计算的存储过程!数据库教程2025-07-09
- 语法知识2022-12-21
- 虚拟语气语法2022-12-11
- 汉语语法2023-01-12
- SAN网络存储?什么是SAN2023-03-23
- 化学品存储管理规定2025-10-27
- 英语语法:名词语法2022-12-11
- 高二语法作文2024-07-20