INSERT 优先级的匹配问题,求救

来源:百度知道 编辑:UC知道 时间:2024/05/25 23:26:00
我现在有这样一个INSERT需求,优先级的匹配问题,如下:
首先用参数@param1去匹配,找不到,再用@param2去匹配,一般的作法是
IF (SELECT COUNT(Id) FROM TbExamp WHERE Id = @param1)>0
INSERT INTO ....
SELECT * FROM TbExamp WHERE Id = @param1
ELSE
INSERT INTO ....
SELECT * FROM TbExamp WHERE Id = @param2

但是对于匹配条件很多的情况下,这样一个语句非常大,相当于匹配的过程要写三次,造成SP很庞大。请问,可不可以在一句话里实现这个需求,即匹配条件只写一次,比方说通过OR或者CASE 什么的?或者非常肯定的打碎我的希望:从技术上讲,绝对不可能实现!
非常感谢!

你用N个变量参数的话,那你得定义多少次啊?
把你的变量改为游标
然后执行loop循环
如果id=游标中某一个数的时候就执行insert,否则取下一个游标

楼主这样分开没问题,有时语法简洁不一定效率高。
楼主改一下判断效率高一些

if exists(select 1 from TbExamp WHERE Id = @param1)
....
else
.....