哦,不好意思,是我打错了。。没注意到那里 create procedure sp_ss ( @wherestr varchar(100) ) declare @sql varchar(100) select @sql='select s,t1-t2 from (select t,t1,t2 from t where '+@wherestr+ ') k'
exec(@sql) go 这是修证后的,还是那两个地方出的错,减号和k附近有语法错误
select @sql='select s,t1-t2 from ---------------- 子查询里面有没有“s”,你select什么“s”
create procedure sp_ss @wherestr varchar(100) as declare @sql varchar(100) select @sql='select * from (select * from aa where '+@wherestr+ ') k'
exec(@sql) go 这样可以吧!!
create procedure sp_ss as declare @sql varchar(10) select @sql='select m,s1,s2-sk from (select t.t3 as m,s.s1,s.s2,sum(t.t2) as sk from s left join t on t.t3=s.t3 group by t.t3,s.s1,s.s2) p ' exec(@sql)go create table s(t3 varchar(10),s1 float,s2 float ) create table t(t3 varchar(10),t1 float,t2 float)这是我刚做的,大致就这么个意思 引号里面的我在分析器里运行成功了
然后创建成存储过程又不行了?不要@sql那个鸟变量,直接EXEC呢?exec ('select m,s1,s2-sk from (select t.t3 as m,s.s1,s.s2,sum(t.t2) as sk from s left join t on t.t3=s.t3 group by t.t3,s.s1,s.s2) p ')
create table s(t3 varchar(10),s1 float,s2 float ) create table t(t3 varchar(10),t1 float,t2 float) gocreate procedure sp_ss @s varchar(100) as declare @sql varchar(1000) set @sql='select m,s1,s2-sk from (select t.t3 as m,s.s1,s.s2,sum(t.t2) as sk from s left join t on t.t3=s.t3 where '+@s+' group by t.t3,s.s1,s.s2) p ' exec (@sql) go exec sp_ss 't2 =1 and t.t3 = ''aa''' drop table s,t drop proc sp_ss
中有可能存在非法的字符,如单引号。
不告诉你了吗?里面的select写错了:
create procedure sp_ss
(
@wherestr varchar(100)
)
declare @sql varchar(100) select @sql='select s,t1-t2 from
(select t,t1,t2 from t where '+@wherestr+ ') k'
exec(@sql)
go
这是修证后的,还是那两个地方出的错,减号和k附近有语法错误
----------------
子查询里面有没有“s”,你select什么“s”
@wherestr varchar(100)
as
declare @sql varchar(100) select @sql='select * from
(select * from aa where '+@wherestr+ ') k'
exec(@sql)
go
这样可以吧!!
as
declare @sql varchar(10) select @sql='select m,s1,s2-sk from
(select t.t3 as m,s.s1,s.s2,sum(t.t2) as sk from s
left join t on t.t3=s.t3
group by t.t3,s.s1,s.s2) p ' exec(@sql)go
create table s(t3 varchar(10),s1 float,s2 float )
create table t(t3 varchar(10),t1 float,t2 float)这是我刚做的,大致就这么个意思
引号里面的我在分析器里运行成功了
declare @sql varchar(8000)
然后创建成存储过程又不行了?不要@sql那个鸟变量,直接EXEC呢?exec ('select m,s1,s2-sk from
(select t.t3 as m,s.s1,s.s2,sum(t.t2) as sk from s
left join t on t.t3=s.t3
group by t.t3,s.s1,s.s2) p ')
create table t(t3 varchar(10),t1 float,t2 float) gocreate procedure sp_ss
@s varchar(100)
as
declare @sql varchar(1000)
set @sql='select m,s1,s2-sk from
(select t.t3 as m,s.s1,s.s2,sum(t.t2) as sk from s
left join t on t.t3=s.t3 where '+@s+'
group by t.t3,s.s1,s.s2) p ' exec (@sql) go exec sp_ss 't2 =1 and t.t3 = ''aa'''
drop table s,t
drop proc sp_ss