如何将空值传递给MySql存储过程 [英] How to pass Null vules to MySql Stored procedure

查看:107
本文介绍了如何将空值传递给MySql存储过程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

创建表emp(id int auto_increment,ename varcahr(50),sl decimal(10,2),DOB datetime)
创建表`test`.`emp`(
`id`整数未签名,不能为空AUTO_INCREMENT,
`name` VARCHAR(45)NOT NULL,
薪水DECIMAL(10,2)NOT NULL,
`DateOfBirth` DATETIME NOT NULL,
主键(`id`)
)
引擎= InnoDB;
id名称薪水DateOfBirth
1 A 1000 1986-10-10
2 B 2000 1985-02-08
3 C 3000 1990-01-11
4 D 4000 1980-03-03


1)在asp.net中,在页面加载时显示gridview中的所有值
2)当我给出一个起始日期表格asp.net 1986-10-10时显示值DateOfBirth> = FROMDATE
3)当我给出1985年1月1日至今的dsiplay值DateOfBirth< = TODATE
4)如果同时在这些值中同时显示日期DateOfBirth> = FROMDATE和DateOfBirth< = TODATE
5)如果给定空文本日期,则显示带有日期的总表
请为此提供存储过程
我正在编写此过程,但没有采用空值
DELIMITER $$
创建过程getClient(在FROMDATE日期中,在TODATE日期中)
开始
SELECT ID,名称,薪水,加入日期
来自emp
其中(DateOfBirth< = FROMDATE或FROMDATE为null)/*,但此处不采用sql */
这样的空值 AND(DateOfBirth> = TODATE或FROMDATE为空);

结束$$
DELIMITER;

create table emp(id int auto_increment,ename varcahr(50),sl decimal(10,2),DOB datetime)
CREATE TABLE `test`.`emp` (
`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NOT NULL,
`salary` DECIMAL(10,2) NOT NULL,
`DateOfBirth` DATETIME NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE = InnoDB;
id name salary DateOfBirth
1 A 1000 1986-10-10
2 B 2000 1985-02-08
3 C 3000 1990-01-11
4 D 4000 1980-03-03


1)in asp.net when page loading dispaly all the values in a gridview
2)when i gave a from date form asp.net 1986-10-10 display values DateOfBirth >= FROMDATE
3)when i give to date 1985-01-01 dsiplay values DateOfBirth<= TODATE
4)if give both dates DateOfBirth >= FROMDATE and DateOfBirth<= TODATE display with in these values
5)if give empty text dates dispaly the total table with dates
plz give a stored procedure for this
i am write this procedure but null values not taken it
DELIMITER $$
create procedure getClient(in FROMDATE date,in TODATE date)
begin
SELECT id,name,salary,dateofjoin
FROM emp
where (DateOfBirth <= FROMDATE or FROMDATE is null )/* but here null values not taken like sql*/
AND (DateOfBirth>= TODATE or FROMDATE is null);

end $$
DELIMITER ;

推荐答案


创建过程getClient(在FROMDATE日期中,在TODATE日期中)
开始
SELECT ID,名称,薪水,加入日期
来自emp
其中(DateOfBirth< = FROMDATE或FROMDATE为null)/*,但此处不采用sql */
这样的空值 AND(DateOfBirth> = TODATE或FROMDATE为空);

结束

create procedure getClient(in FROMDATE date,in TODATE date)
begin
SELECT id,name,salary,dateofjoin
FROM emp
where (DateOfBirth <= FROMDATE or FROMDATE is null )/* but here null values not taken like sql*/
AND (DateOfBirth>= TODATE or FROMDATE is null);

end



DELIMITER;

DELIMITER ;


不太清楚,但是当您从.Net调用存储过程时,可以使用DBNull.Value传递空值.
Not quite clear, But you may use DBNull.Value to pass null values while calling your Stored Procedure from .Net.


这篇关于如何将空值传递给MySql存储过程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆