就命给钱 弄好长时间了没出来 求求大家

liuqian0415 2006-09-27 02:58:18
CREATE PROCEDURE GetDay
(
@datetime char(7),
@table char(6),
@watermetername nvarchar(100)
)
AS

DECLARE @SQL AS nvarchar(3500)


SET @SQL='SELECT c_datetime,c_bzs FROM' + ' ' + @table
SET @SQL=@SQL + ' ' + 'where convert(char(7),c_datetime,102)=' +@datetime
SET @SQL=@SQL + ' ' + 'and convert(char(8),c_datetime,108)=' +'"00:00:00"'
SET @SQL=@SQL + ' ' + 'and Tag=' + @watermetername
SET @SQL=@SQL+ ' ' + 'ORDER BY c_datetime ASC'

EXECUTE sp_executesql @SQL


这是我定义的PROCE

执行:exec GetDay '2005.01','sc2005','GSDYH_JXC_LJLL'
错误提示
服务器: 消息 207,级别 16,状态 3,行 1
列名 'GSDYH_JXC_LJLL' 无效。


Tag在数据库的定义是char(25)

这是什么错误
...全文
132 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Well 2006-09-27
  • 打赏
  • 举报
回复
调试类似的错误,就好的方法是将其动态的字符串执行的 语句打出来。。
用print @SQL
SELECT c_datetime,c_bzs FROM sc2005
where convert(char(7),c_datetime,102)=2005.01 and convert(char(8),c_datetime,108)="00:00:00"
and Tag=GSDYH_JXC_LJLL
ORDER BY c_datetime ASC

一看就知道有问题。。
where convert(char(7),c_datetime,102)=2005.01 and convert(char(8),c_datetime,108)="00:00:00"
and Tag=GSDYH_JXC_LJLL
--这是有问题的,正确有格式是
where convert(char(7),c_datetime,102)='2005.01' and convert(char(8),c_datetime,108)='00:00:00'
and Tag='GSDYH_JXC_LJLL'
所以存储也要做相应的修改。。

CREATE PROCEDURE GetDay
(
@datetime char(7),
@table char(6),
@watermetername nvarchar(100)
)
AS

DECLARE @SQL AS nvarchar(3500)


SET @SQL='SELECT c_datetime,c_bzs FROM' + ' ' + @table
SET @SQL=@SQL + ' ' + 'where convert(char(7),c_datetime,102)=''' +@datetime+''''
SET @SQL=@SQL + ' ' + 'and convert(char(8),c_datetime,108)=' +'''00:00:00'''
SET @SQL=@SQL + ' ' + 'and Tag=''' + @watermetername+''''
SET @SQL=@SQL+ ' ' + 'ORDER BY c_datetime ASC'

--print @SQL return

EXECUTE sp_executesql @SQL
GO


wgsasd311 2006-09-27
  • 打赏
  • 举报
回复
create PROCEDURE GetDay
(
@datetime char(7),
@table char(6),
@watermetername nvarchar(100)
)
AS

DECLARE @SQL AS nvarchar(3500)


SET @SQL='SELECT c_datetime,c_bzs FROM' + ' ' + @table
SET @SQL=@SQL + ' ' + 'where convert(char(7),c_datetime,102)=''' +@datetime+''''
SET @SQL=@SQL + ' ' + 'and convert(char(8),c_datetime,108)=' +'''00:00:00'''
SET @SQL=@SQL + ' ' + 'and Tag=''' + @watermetername+''''
SET @SQL=@SQL+ ' ' + 'ORDER BY c_datetime ASC'

EXECUTE sp_executesql @SQL
dongrenyi 2006-09-27
  • 打赏
  • 举报
回复
列名无效啊,估计是表的问题
dulei115 2006-09-27
  • 打赏
  • 举报
回复
加引号

CREATE PROCEDURE GetDay
(
@datetime char(7),
@table char(6),
@watermetername nvarchar(100)
)
AS

DECLARE @SQL AS nvarchar(3500)


SET @SQL='SELECT c_datetime,c_bzs FROM' + ' ' + @table
SET @SQL=@SQL + ' ' + 'where convert(char(7),c_datetime,102)=' +@datetime
SET @SQL=@SQL + ' ' + 'and convert(char(8),c_datetime,108)=' +'"00:00:00"'
SET @SQL=@SQL + ' ' + 'and Tag=''' + @watermetername + ''''
SET @SQL=@SQL+ ' ' + 'ORDER BY c_datetime ASC'

EXECUTE sp_executesql @SQL
点点星灯 2006-09-27
  • 打赏
  • 举报
回复
CREATE PROCEDURE GetDay
(
@datetime char(7),
@table char(6),
@watermetername nvarchar(100)
)
AS

DECLARE @SQL AS nvarchar(3500)


SET @SQL='SELECT c_datetime,c_bzs FROM' + ' ' + @table
SET @SQL=@SQL + ' ' + 'where convert(char(7),c_datetime,102)=' +@datetime
SET @SQL=@SQL + ' ' + 'and convert(char(8),c_datetime,108)=' +'"00:00:00"'
SET @SQL=@SQL + ' ' + 'and Tag=''' + @watermetername+''''
SET @SQL=@SQL+ ' ' + 'ORDER BY c_datetime ASC'

EXECUTE sp_executesql @SQL

34,590

社区成员

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

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