34,576
社区成员
发帖
与我相关
我的任务
分享
--我插,update 表和set之前也少了一个空格
ALTER PROC [dbo].[addbktodaydata1]
@bankuaicode VARCHAR(50)
AS
BEGIN
DECLARE @sql NVARCHAR(1000)
DECLARE @sql1 NVARCHAR(1000)
DECLARE @sql2 NVARCHAR(1000)
DECLARE @bankuainame NVARCHAR(100)
DECLARE @begintime1 NVARCHAR(20)
DECLARE @sum5 float
SET @begintime1=CONVERT(VARCHAR(10),GETDATE(),120)
SET @bankuainame='zhy'+@bankuaicode
SET @sql='insert into '+@bankuainame+' (begintime,bankuaicode,dayopen,dayhigh,daylow,dayclose,dayvol)
select begintime,bankuaicode,dayopen,dayhigh,daylow,dayclose,dayvol
from lsbankuaidata where bankuaicode=@bankuaicode and begintime=@begintime1'
EXEC sp_executesql @sql,N'@bankuaicode VARCHAR(50),@begintime1,NVARCHAR(20)', @bankuaicode,@begintime1
SET @sql1='select @sum5=sum(t.dayclose) from (select top 5 dayclose from '+@bankuainame+' where begintime= @begintime1 order by begintime desc) t'
exec sp_executesql @sql1,N'@begintime1 NVARCHAR(20),@sum5 float output',@begintime1,@sum5 OUTPUT
SET @sql2='update' +@bankuainame+ ' SET day5= @sum5 where begintime=@begintime1'
exec sp_executesql @sql2,N'@begintime1 NVARCHAR(20),@sum5 float',@begintime1,@sum5
END
/*
首先你的@sum5是float类型,你跟字符串拼在一起的时候,不转换,这样报nvarchar转换为float出错
其次,你的查询语句少了单引号,你打印出来会看到是这样:
SELECT begintime,bankuaicode,dayopen,dayhigh,daylow,dayclose,dayvol from lsbankuaidata where bankuaicode=值 and begintime=2020-11-12
再次,你的bankuaicode和begintime两个条件直接的and这里少了一个空格
再再次,几计算@sum5,你sp_executesql的时候没有用output,这样你是得不到字符串里面计算的结果的
*/
ALTER PROC [dbo].[addbktodaydata1]
@bankuaicode VARCHAR(50)
AS
BEGIN
DECLARE @sql NVARCHAR(1000)
DECLARE @sql1 NVARCHAR(1000)
DECLARE @sql2 NVARCHAR(1000)
DECLARE @bankuainame NVARCHAR(100)
DECLARE @begintime1 NVARCHAR(20)
DECLARE @sum5 float
SET @begintime1=CONVERT(VARCHAR(10),GETDATE(),120)
SET @bankuainame='zhy'+@bankuaicode
SET @sql='insert into '+@bankuainame+' (begintime,bankuaicode,dayopen,dayhigh,daylow,dayclose,dayvol)
select begintime,bankuaicode,dayopen,dayhigh,daylow,dayclose,dayvol
from lsbankuaidata where bankuaicode=@bankuaicode and begintime=@begintime1'
EXEC sp_executesql @sql,N'@bankuaicode VARCHAR(50),@begintime1,NVARCHAR(20)', @bankuaicode,@begintime1
SET @sql1='select @sum5=sum(t.dayclose) from (select top 5 dayclose from '+@bankuainame+' where begintime= @begintime1 order by begintime desc) t'
exec sp_executesql @sql1,N'@begintime1 NVARCHAR(20),@sum5 float output',@begintime1,@sum5 OUTPUT
SET @sql2='update' +@bankuainame+ 'SET day5= @sum5 where begintime=@begintime1'
exec sp_executesql @sql2,N'@begintime1 NVARCHAR(20),@sum5 float',@begintime1,@sum5
END