declare @qz varchar(10) ,@bh varchar(10) ,@hz varchar(10),@Sname varchar(40),@Vsql varchar(800) ,@Dsql varchar(800),@Dqz varchar(50),@Dhz varchar(50),@Dzz varchar(50)
set @qz='USER00'
set @bh=5
set @hz='2009'
set @Dqz='master..xp_cmdshell'+"'"+'bcp'+'"'+'Select * from'+ "'"
set @Dzz='..JCJK'+'"'+' queryout d:\JCJK\'
set @Dhz='.txt -c -SJCQCZJ -Usa -P12345'+"'"
while @bh<10
begin
set @Sname = @qz+@bh+@hz
set @Dsql =@Dqz+@Sname+@Dzz+@qz+@bh+@Dhz
print @Sname
set @Vsql='use '+@Sname
print @Vsql
exec(@Vsql)
这条语句后面我添加了视图,但为什么是实际并没有打开新的数据库啊
SQL里这个EXEC为什么没执行??
答案:2 悬赏:50 手机版
解决时间 2021-01-30 02:00
- 提问者网友:捧腹剧
- 2021-01-29 15:41
最佳答案
- 五星知识达人网友:雾月
- 2021-01-29 16:24
在exec过程中运行了此命令,出过程后回到了原来的数据库。
set @Vsql='use '+@Sname
set @Vsql=@Vsql+' create table a1(id int)';
print @Vsql
exec(@Vsql)
测试一下,没问题。
如果是在一个服务器上,可以用完整的路径来表示。不用use也可以、
如 select * from db1.dbo.table1
你的视图语句没有动态生成,可以直接运行,不必用exec. 字符串中的单引号要用连两个。
set @Vsql='use '+@Sname
set @Vsql=@Vsql+' create table a1(id int)';
print @Vsql
exec(@Vsql)
测试一下,没问题。
如果是在一个服务器上,可以用完整的路径来表示。不用use也可以、
如 select * from db1.dbo.table1
你的视图语句没有动态生成,可以直接运行,不必用exec. 字符串中的单引号要用连两个。
全部回答
- 1楼网友:杯酒困英雄
- 2021-01-29 17:01
exec sp_executesql @sql 这是语法。你缺东西。
把sql放在一个变量里。'select * from userinfo where ('+@username'='''' or [user_name]='''+@username+''')'
declare @sql nvarchar(500)
set @sql =''select * from userinfo where ('+@username'='''' or [user_name]='''+@username+''')'
exec sp_executesql @sql
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯