sql傳遞參數
① sql 中如何在函數中傳遞表名參數
我查遍網路找不到,2020.06.28 18:45原創一個目前你能找到的唯一權宜之計:
因sql的函數本身不支持對實體表進行增、刪、改,所以對實體表進行的insert、update、delete均不可用、另外exec也被禁用了,因為動態表名和動態欄位值不會太多,所以想到寫枚舉解決。
--如果函數返回表為@ab table (a1 varchar(100), a2 varchar(100))
--如果表名為@tableName
if @tableName='表1'
insert into @ab select a1,a2 from 表1 where ...
if @tableName='表2'
insert into @ab select a1,a2 from 表2 where ...
如果有欄位名參數為@fieldName,欄位值參數@fieldValue
if @fieldName='a1'
delete from @ab where a1 not like '%' + @fieldValue + '%'
if @fieldName='a2'
delete from @ab where a2 not like '%' + @fieldValue + '%'
--對@ab的其它業務邏輯
...
return
② 怎麼在mybatis的動態sql中傳遞int類型參數
在MyBatis中可以用以下的方式來傳遞多個參數1. 用java.util.Map來傳遞, Code 如下public List<User> getAllUsersByUserName(String username, int start, int limit){ Map<String,Object> params = new HashMap<String, Object>(3); params.put("username",username); params.put("start",start); params.put("limit",limit); return userMapper.getAllUsersByUserName(params); } 對應的XXMapper.xml文件中如下:<select id="getAllUsersByUserName" parameterType="map" resultType="User"> SELECT u.* FROM User u WHERE u.username LIKE #{username} '%' LIMIT #{start}, #{limit} </select>2. 用JavaBean的方式來傳遞, Code如下:public List<User> getUsersByUserName(String username){ User user = new User(); user.setUsername(username); return userMapper.getUserByUsername(user); }對應的XXMapper.xml文件中如下:<select id="getAllUsersByUserName" parameterType="User" resultType="User"> SELECT u.* FROM User u WHERE u.username = #{username} </select>OK, 就介紹這兩種方法吧!!!
③ sql語句中使用關鍵字in,該如何傳遞參數
請將參數拼接到sql腳本中,不然你直接的結果不是你想要的哦!
例:
declare@avarchar(100)
set@a='34,12,335'
declare@sqlvarchar(max)
set@sql='select*fromtableNamewherekeyIdin('+@a+')'
print(@sql)
exec(@sql)
請試一試,如有疑問,及時溝通!
④ SQL映射傳遞參數比需要的多
你好,很高興回答你的問題。
不會因為map中有多餘參數而報錯,只要不少就行。
反而會因為圖中紅線標識的位置多了一個逗號而報錯。
如果有幫助到你,請點擊採納。
我解答的大部分是軟體開發新人遇到的問題,如果有興趣,可以關注我。