永发信息网

sql存储过程 sql语句拼接问题 为啥传进去的值带双引号呢

答案:3  悬赏:50  手机版
解决时间 2021-03-08 07:31
create Procedure dd
@whereStr nvarchar(200),--条件
@orderStr nvarchar(200),--排序
@descStr nvarchar(200)--正序或者倒叙排序
as
declare @sqlstr Nvarchar(4000)
set @SqlStr=N'select * from biao where '+@whereStr+' '+@orderStr+' '+@descStr;
Execute SP_ExecuteSql @SqlStr
这个是存储过程
我执行的时候打印了一下sql语句
是这样的
select * from biao where "列名==1" "order by Id" "desc"
每个传进来的值都带引号 导致sql语句不能执行报错
最佳答案
我这里测试可行
alter Procedure dd
@whereStr nvarchar(200)='1=1',--条件
@orderStr nvarchar(200)='order by no',--排序
@descStr nvarchar(200)='desc'--正序或者倒叙排序
as
declare @sqlstr Nvarchar(4000)
set @SqlStr=N'select * from tablea_3 where '+@whereStr+' '+@orderStr+' '+@descStr;
--print @SqlStr

exec (@SqlStr)

--select * from tablea_3

GO
全部回答
loginname指的就是一个变量名<与数据库里的字段匹配>, 而'"+login1.username+"'就是你输入的值, 假如只有单引号,系统会认为变量就是login1.username, 而这个值是固定的,然而我们需要的是一个变量, 所以就得再加一个双引号, 至于‘+’就是连接字符串的意思、、、
sp_executesql执行语句传入的是参数,execute执行语句是字符。 像你的问题就用:execute(@sqlStr) 而不是Execute SP_ExecuteSql @SqlStr
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
天桥粉店在哪里啊,我有事要去这个地方
根据所学知识判断下列几种叙述中正确的是B①
《超能查派》里的机器人都不可以充电?为什么
中二病也要谈恋爱的结局也太烂了吧,学姐变那
日本小学生的书包凭什么买5000
狐狸相公改结局了吗?网上说的和我看的不一样
世界最好的车是什么车
【伤筋动骨一百天】伤筋动骨一百天英语怎么说
顺航汽配商行怎么去啊,有知道地址的么
我想你了的英语怎么写?
html标签定义五行一列
于hole发音相同的单词有哪些
患者脘腹冷痛,痛势暴急,口吐清水,面青肢冷
从福田口岸出发到香港一日游,路线怎么样安排
怎样叫醒贪睡的男友
推荐资讯
东风里粮店鸡蛋店我想知道这个在什么地方
让你知道谁更无情,我甘愿成为坏人。是什么歌
按《西游记》书中出现的先后顺序将下列故事情
梦幻西游最快可以多少时间出师?
何以琛萧默电视剧里萧晓的演员的真名字叫什么
一个逻辑悖论。一直没有搞明白。老师说:“下
地下城与勇士系列动画一共有多少部
荣威350还完火花塞打不着火了怎么回事
西屯村村地址在什么地方,想过去办事
卖小金鱼的水是绿色和黄色的是放了什么?
桂阳五里桥加油站在什么地方啊,我要过去处理
从庐江到巢湖汽车票价多少啊!急…
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?