存储过程多条件判断
1. 存储过程里需要多个判断的时候怎么写最方便而不是写多个if判断
在查询里判断可以用 case when then else end 判断,如果是判断条件,要用if else来判断,case when then else end 只能在查询语句使用,并不能完全代替if else,如以下是case when then else end 的用法,你看看是否能用:
UPDATE USER SET BIRTHDAY=
(
CASE NAME
WHEN '张三' THEN '1949-10-1'
WHEN '李四' THEN '1997-7-1'
ELSE BIRTHDAY
END
)
where NAME in ('张三','李四');
2. sql 存储过程多条件查询
DECLARE @sign char(1)
DECLARE @SQL nvarchar(4000)
SET @sql='SELECT distinct isnull(pd.PatientGivenName,'') , isnull(pd.PatientFamilyName,'')+' '+isnull(pd.PatientMiddleName,'') FROM dbo.PatientDemographics pd where 1=1'
或
DECLARE @sign char(1)
SET @sign=','
DECLARE @SQL nvarchar(4000)
SET @sql='SELECT distinct isnull(pd.PatientGivenName,'')'+@sign+' isnull(pd.PatientFamilyName,'')+' '+isnull(pd.PatientMiddleName,'') FROM dbo.PatientDemographics pd where 1=1'
insert进我定义的一个表如下:
DECLARE @indextable TABLE(rowid INT IDENTITY(1,1),nid INT)
INSERT INTO @indextable(nid) --将符合的记录插入到临时表中
SELECT [ID]
FROM table1
Where 条件
3. SQL存储过程多条件查询问题
那你可以考虑写临时表啊。@count int output
set @sqlCount='select count(*) as a into ##XXXX from personJobs where '+@sql2
exec(@sqlCount)Select @count=a from ##XXXX
4. sql 存储过程拼接超过长度怎么处理 sql 存储过程多条件查询如果未传值 则不执行该条件如何写谢谢!
1.substr ,否则异常,要不是length(),if 超长,dbms_out....然后去日志里看超长的要不要处理,如果自动执行,建个log表把超长的存进去;
2.在存储过程开始的时候 把整个存储过程最外层加上if 。。。。is not null then
5. mysql存储过程的if判断有多个条件该怎么优化效率
这个应该不会太慢吧,我建议你看一下,你是不是循环做了太多次的插入/更新操作。
mysql默认的配置中,每次事务提交都要写binlog和redo log,如果循环太多次——比如循环插入10w条记录——就会非常慢。一般优化思路分两种:
1 修改 sync_binlog为一个100-1000间的值,让binlog每隔100-1000个事务后再写一次;修改innodb_flush_log_at_trx_commit =2; 这么搞的好处是降低了写log的次数和消耗的时间,缺点是,中间出错的话,会丢失一部分的binlog和redolog导致无法通过他们来在出问题是恢复生产库数据。
2 将所有的插入/更新操作放到一个事务中进行。这样,显然就只需要一次写binlong和redolog咯。
6. SQL的多条件查询的存储过程问题
第一个文本:输入材质。第二个文本框,输入最小价格。第三个文本框:输入最大价格。
然后按搜索按钮string
pm,cz,min,max;(接收输入的时候最大最小价格是string类型,数据库里的价格是int类型的,存储过程中要不要转换,后台程序中怎么转换)默认下拉框是请选择
输入情况例如:
P1,C1,1,1000
(筛选符合条件的)
P1,C1,1,没写
请选择,C1,没写,1000(意思是只有第二个和第四个有值)
根据输入的条件显示符合的信息(有一个条件就一个条件筛选,多个条件就多个条件来筛选)
问题:这样的存储过程应该怎么写(需要写好注释)补充:
表中字段
ID,品名,材质,价格,备注,其他
价格是
int类型
剩下的都是nvarchar类型
7. SQL存储过程中,if判断语句中有多个判断条件时,要用括号括.吗
如果像你这个只是单纯的or的话,这两种写法应该都可以。
可是如果是有and又有or,那么就需要你先把这个条件的先后分清楚了,这样的情况,肯定需要括号括清楚每一层。
8. SQL存储过程中,if判断语句中有多个判断条
if(@rq2 is null or @rq2!=@a11) //多个判断条件
begin
处理
end
else
begin
处理
end