存储过程禁止空参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储过程禁止空参数相关的知识,希望对你有一定的参考价值。

我想让存储过程里的参数不允许为空,应该如何处理

参考技术A 默认情况下,参数可为空。如果传递 NULL 参数值并且该参数语句中使用,而该语句中引用的列又不允许使用 NULL,则 SQL Server 会产生一条错误信息。为了防止向不允许使用 NULL 的列传递 NULL 参数值,应向过程中添加编程逻辑或为该列使用默认值(使用 的 DEFAULT 关键字)。 参考技术B 在存储过程中判断一下参数中是否有空,如果空就不执行。 参考技术C 我的存储过程有3个参数,其中指定任何一个就行了。我想在程序里面给没有adapter.SelectCommand.Parameters.Add("@lightid", SqlDbType.Int); 去掉 参考技术D 判断一下传入的参数是否为空,如果null,return error信息出去。追问

这是我的的代码,因为我这里ysdwdm like @Agsdm +'%'必须要用like,
所以如果@Agsdm 是空值就会全部输出,怎么才可以让它如果为空值就输出空
谢谢

本回答被提问者采纳
第5个回答  2012-04-26 create 存储过程
AS
if isnull(@Agsdm,'')=''
select 1 where 1=2
else
begin
你的代码
end

存储过程无法得到返回型参数

普遍大家都会用SqlDataReader做返回结果集,但是如果做业务有返回型参数的时候,参数死活都是空值,而存储过程中有此参数的值,

如果用DataTable就没问题了,原因分析是DataReader查询后在返回型参数没有存储之前就已经断开连接了,所以值没有得到保存,所以为空值。

而DataTable把所有数据都已经存起来了,之后才断开链接,所以值就会被取出来。这个东西真是麻烦,希望大家以后不要走此弯路了。

以上是关于存储过程禁止空参数的主要内容,如果未能解决你的问题,请参考以下文章

使用空参数和 SqlDataAdapter 调用存储过程

VBScript:将具有空值的参数传递给存储过程?

当我尝试通过存储过程插入空值时出现 SqlException

MySQL存储过程CREATE PROCEDURE 存储过程名(参数列表)

MySQL存储过程CREATE PROCEDURE 存储过程名(参数列表)

SQL-Server存储过程中的参数问题!