exec 问题

WindowsMe 2001-09-20 05:10:30
各位:

两个问题,请回答

1 exec的问题,见下面的SQL,有问题的地方我打了::SOS
如果改成:
exec ("insert into ryquery select * from " + @tbname )
就一切OK,加上后半截后,就告诉我convert出错,我单独拿出来这个字符串,能select出来啊,就是不能exec.

救命啊~~~~~~~

2 我现在用SQL SERVER 7,写SQL用的是ANALYZER,手头上没有书,请告诉几个能下SQLSERVER7电子书的地方



if exists(select * from sysobjects where name='sp_getresult' and xtype='P')
drop procedure sp_getresult
go

create procedure sp_getresult @start_date datetime, @end_date datetime, @query_no int,@return int output

as

--@return为一返回值,现在先不设
declare @sql varchar(255)
declare @tbname varchar(8)
declare @month_count int
declare @i int
select @i=0

--clear table ryquery
delete from ryquery

select @month_count=datediff(month,@start_date,@end_date)
--select @month_count as month_count


--逐月进行判断,然后插入表ryquery

while(@i<(@month_count+1))
begin
select @tbname='ry'+convert(varchar(8),dateadd(month,@i, @start_date),112)
--select @tbname,@i
if(exists(select * from sysobjects where name=@tbname and xtype='U'))
::SOS exec ("insert into ryquery select * from " + @tbname + " where query_no= " + convert(varchar(8),@query_no))
--set @sql= "insert into ryquery select * from " + @tbname + " where query_no= " + convert(varchar(8),@query_no)
--exec @sql
set @i=@i+1
end


go

exec sp_getresult '2000/01/01','2001/04/02',9177,0
...全文
162 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzou 2001-09-20
  • 打赏
  • 举报
回复
exec ("insert into ryquery select * from " + @tbname + " where query_no= '" + convert(varchar(8),@query_no)+"'")
看看行不行,不行的话限定以一个变量 v_strNo char(10)
select v_strNo = convert(varchar(8),@query_no)
再做可能就简单一些了

WindowsMe 2001-09-20
  • 打赏
  • 举报
回复
谢谢大家

小姐,买单
WindowsMe 2001-09-20
  • 打赏
  • 举报
回复
begin
select @sql =
"insert into ryquery select * from "
+ @tbname
+ " where query_no= "
+ convert(varchar(8),@query_no)
--select @sql
exec (@sql)
end


双引号也一样一样的啊

谁有兴趣,找出答案后通知我一声

谢谢大家

WindowsMe 2001-09-20
  • 打赏
  • 举报
回复
呵呵,刚才在按照4N的提示做呢

DONE,呵呵,我也是先select出验证了下,所以耽误了点时间,抱歉,抱歉,回头我再改成双引号看看

高兴

高兴
nononono 2001-09-20
  • 打赏
  • 举报
回复
select @sql= "insert into ryquery select * from " + @tbname + " where query_no= " + convert(varchar(8),@query_no)

怎么又用上双引号了? 别用双引号, 用单.

另外, 如果是下面的语句, 显示的是什么样的SQLs?
begin
declare @SQLs char(400)

select @SQLs =
'insert into ryquery select * from '
+ @tbname
+ ' where query_no= '
+ convert(varchar(8),@query_no)

select @SQLs

--exec (@SQLs)

end

WindowsMe 2001-09-20
  • 打赏
  • 举报
回复
各位

我再加上100分,不算扰乱技术论坛的秩序吧?

拜托,大家,拜托

这是我在这里的第一个帖子,请多多关照
WindowsMe 2001-09-20
  • 打赏
  • 举报
回复
不行啊

nononono(null,null):

@tbname没问题啊

改成
while(@i<(@month_count+1))
begin
select @tbname='ry'+convert(varchar(8),dateadd(month,@i, @start_date),112)
--select @tbname,@i
if(exists(select * from sysobjects where name=@tbname and xtype='U'))
select @tbname,@i
--exec ('insert into ryquery select * from ' + @tbname + ' where query_no= ' + convert(varchar(8),@query_no))
--exec ('insert into ryquery select * from ' + @tbname + ' where query_no= ''' + convert(varchar(8),@query_no)+'''')
/*
begin
select @sql= "insert into ryquery select * from " + @tbname + " where query_no= " + convert(varchar(8),@query_no)
select @sql
end
*/
set @i=@i+1
end


go

exec sp_getresult '2000/01/01','2001/05/02',177,0

运行结果

-------- -----------
ry200103 14

(1 row(s) affected)


-------- -----------
ry200104 15

(1 row(s) affected)

表名正确,后面的数字也正确啊  

WindowsMe 2001-09-20
  • 打赏
  • 举报
回复
毛驴GG:

我打算最后一次试,但愿你的语句能跑

否则,哼哼~~~~~~~~~~~~~~~~~~(我就去自杀)
smartdonkey 2001-09-20
  • 打赏
  • 举报
回复
bug.是bug
smartdonkey 2001-09-20
  • 打赏
  • 举报
回复
exec ('insert into ryquery select * from ' + @tbname + ' where query_no= ''' + convert(varchar(8),@query_no)+'''')

nononono 2001-09-20
  • 打赏
  • 举报
回复
这么写, 看看是哪句错:

--------------------
declare @SQLs char(400)

select @SQLs =
'insert into ryquery select * from '
+ @tbname
+ ' where query_no= '
+ convert(varchar(8),@query_no)

exec (@SQLs)
--------------------

另外, 你的@tbname的值是不是有问题?

WindowsMe 2001-09-20
  • 打赏
  • 举报
回复
exec ('insert into ryquery select * from ' + @tbname )--+ ' where query_no= ' + convert(varchar(8),@query_no))

各位,请再关注,如上,则运行

如果去掉)--,那么就有错误
Server: Msg 156, Level 15, State 1, Procedure sp_getresult, Line 29
Incorrect syntax near the keyword 'convert'.
Server: Msg 2812, Level 16, State 62, Line 2
Could not find stored procedure 'sp_getresult'.


可是如果select出来也没错误啊

help
hydnoahark 2001-09-20
  • 打赏
  • 举报
回复
1.使用'而不要使用"
exec ('insert into ryquery select * from '+ @tbname ...)

nononono 2001-09-20
  • 打赏
  • 举报
回复
首先确定字段query_no的类型,

如果是int型, 应:
exec ('insert into ryquery select * from ' + @tbname + ' where query_no= ' + convert(varchar(8),@query_no))

首先确定字段query_no的类型, 如果是varchar(8)型, 应:
exec ('insert into ryquery select * from ' + @tbname + ' where query_no= ''' + convert(varchar(8),@query_no))+ ''''

WindowsMe 2001-09-20
  • 打赏
  • 举报
回复
拜托,拜托
WindowsMe 2001-09-20
  • 打赏
  • 举报
回复
不行啊,4N @query_no int

我也刚试了

请务必再看看
nononono 2001-09-20
  • 打赏
  • 举报
回复
exec ("insert into ryquery select * from " + @tbname + " where query_no= " + convert(varchar(8),@query_no))

===>>

exec ('insert into ryquery select * from ' + @tbname + ' where query_no= ''' + convert(varchar(8),@query_no))+ ''''
WindowsMe 2001-09-20
  • 打赏
  • 举报
回复
&%@%$@#!$@#!$ER#@!$#@!$#@!$#!@

hurry!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

help!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧