mysql 存储过程 isnull?中isnull函数的用法
一、创建一个存储过程
--如下,可直接**到SQLServer的查询中执行use master
go
--创建数据库
if(db_id('studentDB')) is not null
drop database [studentDB]
create database [studentDB]
go
use [studentDB]
go
--创建学生表
create table [student]
(
[studentId] int identity(1,1) primary key,
[stuName] varchar(50) not null
)
gouse [studentDB]
go
--创建成绩表
create table [score]
(
[studentId] int not null,
[subjectName] varchar(50) not null,
[score] int
)
go
--添加外键约束
--学生ID
alter table [score]
add constraint FK_score_student
foreign key([studentId])
references [student]([studentId])
go
--插入测试数据
insert [student]
select'张三' union
select'李四' union
select'王五' union
select'高六' union
select'赵七'
goinsert [score]
select 1,'语文',50 union
select 1,'数学',51 union
select 1,'英语',52 union
select 2,'语文',60 union
select 2,'数学',61 union
select 2,'英语',62 union
select 3,'语文',70 union
select 3,'数学',71 union
select 3,'英语',72 union
select 4,'数学',null union
select 4,'语文',100 union
select 4,'英语',null
go
use [studentDB]
go
--创建返回学生选课情况的存储过程
alter procedure [pro_GetStudentScore]
@subjectName varchar(50)
as
select stu.[studentId],stu.[stuName],isnull(sco.[subjectName],'该生没选择任何课程') [课程],isnull(convert(varchar(50),sco.[score]),'成绩表中没有这门课的成绩') [成绩]
from [student] stu left join [score] sco on(stu.[studentId]=sco.[studentId])
where sco.[subjectName]=@subjectName
go
--exec [pro_GetStudentScore]'英语'
--select* from score
二、mysql存储过程中执行sql不成功
关键词:启动SQL SERVER时自动执行存储过程
将存储过程创建在master数据库中,然后企业管理器中找到这个存储过程--右键--属性--勾选"每当sql server启动时执行"。
或者在master中创建存储过程后,执行语句设置为自动启动
use master
exec sp_procoption'存储过程名','startup','on'
自动执行存储过程
SQL Server启动时可以自动执行一个或多个存储过程。这些存储过程必须由系统管理员创建,并在 sysadmin固定服务器角色下作为后台过程执行。这些过程不能有任何输入参数。
对启动过程的数目没有限制,但是要注意,每个启动过程在执行时都会占用一个连接。如果必须在启动时执行多个过程,但不需要并行执行,则可以指定一个过程作为启动过程,让该过程调用其它过程。这样就只占用一个连接。
在启动时恢复了后一个数据库后,即开始执行存储过程。若要跳过这些存储过程的执行,请将启动参数指定为跟踪标记 4022。如果以低配置启动 SQL Server(使用-f标记),则启动存储过程也不会执行。有关更多信息,请参见跟踪标记。
若要创建启动存储过程,必须作为 sysadmin固定服务器角色的成员登录,并在 master数据库中创建存储过程。
使用 sp_procoption可以:(中网互赢手机客户端
将现有存储过程指定为启动过程。
三、mysql 存储过程总结(一)
1、存储过程定义:
存储过程是事先经过编译并存储在数据库中的一段 SQL语句的**,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。存储过程思想上很简单,就是数据库 SQL语言层面的代码封装与重用。
2、特点:
封装,复用:可以把某一业务SQL封装在存储过程中,需要用到的时候直接调用即可。
可以接收参数,也可以返回数据:再存储过程中,可以传递参数,也可以接收返回值。
减少网络交互,效率提升:如果涉及到多条SQL,每执行一次都是一次网络传输。而如果封装在存储过程中,我们只需要网络交互一次可能就可以了。
3、基本语法
(1)创建:
(2)调用:
(3)查看:
(4)删除
注意:在命令行中,执行创建存储过程的SQL时,需要通过关键字 delimiter指定SQL语句的结束符。
四、sql***中isnull函数的用法
1,语法:
ISNULL( check_expression, replacement_value)
2,参数:
check_expression**
将被检查是否为 NULL的表达式。check_expression可以是任何类型的。
replacement_value
在 check_expression为 NULL时将返回的表达式。replacement_value必须与check_expresssion具有相同的类型。
3,返回类型:
返回与 check_expression相同的类型。
4,注释:
如果 check_expression不为 NULL,那么返回该表达式的值;否则返回 replacement_value。
5,示例:
将 ISNULL与 **G一起使用
*下面的示例查找所有书的平均价格,用值$10.00替换 titles表的 price列中的所有 NULL条目。
USE pubs
GO
SELECT **G(ISNULL(price,$10.00))
FROM titles
GO*
扩展资料:
Oracle没有 ISNULL()函数。不过,可以使用 NVL()函数达到相同的结果。
MySQL也拥有类似 ISNULL()的函数。不过它的工作方式与微软的 ISNULL()函数有点不同。
在 MySQL中,我们可以使用 IFNULL()函数。
参考资料:百度百科-IsNull