请问:如何在参数中赋空值?(100分)

  • 主题发起人 主题发起人 whatisgod
  • 开始时间 开始时间
W

whatisgod

Unregistered / Unconfirmed
GUEST, unregistred user!
题目如标题.
由于参数较多,而且相对独立,如果用判断后改变SQL语句的方法,那么组合的可能性太多,
我试过将
Params.ParamByName('d').value:=null;
但是提示还是"参数超出范围"之类的错误.
 
如果多个需要为NULL值的话,在存储过程里面将参数定义为NULL值就行啦,不需要用到时不不要给他赋值了。例如:@FixEndSNoHapdDate Datetime = NULL
 
感谢suger的回复.
我的服务端使用ADOQuery,在ClientDateSet使用CommandText传输SQl语句,请问在哪里设置参数呢?
而且不是仅仅在插入数据才使用Null,有时要更新时,用户自己要使用空值的.
 
你的意思是不是如果参数为空,则SQL中 的WHERE的条件就不生成
 
我的代码是这样的:
系统可以给用户设置密码,或清空密码
update user set pass=:pass where id=:id
...parambyname('pass').asstring:=editpass.text
如果密码不为空,语句OK,否则就出现varient(null),string的类型转换异常,问题不在where子句
我尝试过将参数类型转换为Unkonw
...createparam(ftUnkonw,'pass',ptinput)
在程序中应用
...parambyname('pass').value:=null,
但是结果还是一样.
在程序中这样的要求不算太高吧,是Delphi还是ado把事情变得复杂了?
现在我快崩溃了.帮我想想办法吧.
 
如果是密码的话就没可能是为NULL,的,editpass.text为空的话值是空值'',而不是NULL啊。是NULL的话用户怎么登陆啊。
 
就是 ='' 吧
 
当把用户名分发下去是,密码可以是用空的
用=''还是不行,提示精确度不够.
 
如果密码是清空,你就直接写set password=null好了 程序里面做个判断
 
如果是密码的话就没可能是为NULL,的,editpass.text为空的话值是空值'',而不是NULL啊。是NULL的话用户怎么登陆啊。
可以参考
 
我现在使用的是Access,如果数据库换成MS SQL Server,有没有不同呢?
 
建表时就初始化NULL
 
关于空值的问题,我才疏学浅,最终还是没有理想的实现方法,结了吧.
 
多人接受答案了。
 
后退
顶部