当前位置: 代码迷 >> Sql Server >> 使用 出错
  详细解决方案

使用 出错

热度:7   发布时间:2016-04-24 09:25:50.0
使用 报错
ALTER PROCEDURE [dbo].[PROC_CRM_XH_Allot]
@CREATEDATESTARTTIME DATETIME,      
@CREATEDATEENDTIME DATETIME         
AS
begin
 declare 
    @temptablename varchar(100),
    @sql varchar(4000),@startdate varchar(20),@enddate varchar(20);
if not exists(select * from dbo.sysobjects where id = object_id(@temptablename) and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    begin
    exec(
    'create table '+@temptablename+'(
    [AllotID_NUM][INT] default 0,         
    [LendInto_NUM][INT] default 0,          
    [LendWord_NUM][INT] default 0,
[BorrowInto_num][int] default 0,
[BorrowWork_num][int] default 0
    )')
    end
else
begin
EXEC ('drop table ['+@temptablename+']')
 exec(
    'create table '+@temptablename+'(
    [AllotID_NUM][INT] default 0,        
    [LendInto_NUM][INT] default 0,          
    [LendWord_NUM][INT] default 0,
[BorrowInto_num][int] default 0,
[BorrowWork_num][int] default 0
    )')
set @sql='insert into '+@temptablename+' (AllotID_NUM,LendInto_NUM,LendWord_NUM,BorrowInto_num,BorrowWork_num)
    SELECT COUNT(AllotID) as AllotID_NUM
    ,sum(Case when DataType=''借款'' then 1 else 0 end ) as LendInto_NUM
    ,sum(CASE WHEN DataType=''借款'' AND IsDialed=''是'' THEN 1 ELSE 0 END ) as LendWord_NUM
,sum(CASE WHEN DataType=''出借'' then 1 else 0 end ) as BorrowInto_num
    ,sum(CASE WHEN DataType=''出借'' AND ISDIALED=''是'' THEN 1 ELSE 0 END ) as BorrowWork_num
    FROM CRM_XH_Allot where DisTime between '''+convert(varchar(50),@CREATEDATESTARTTIME,120)+''' AND '''+convert(varchar(50),@CREATEDATEENDTIME,120)+''''
  print(@sql)
  exec(@sql)


end

end







     执行的时候 没有报错,但是  在使用存储过程的时候  报个
     消息 102,级别 15,状态 1,第 1 行
   “(”附近有语法错误。

  大神们指出我的错误来















------解决思路----------------------
已经找出问题了

你并没有给@temptablename赋过值,后面动态执行创建表的那句就语法不对,那必须报错啊,
------解决思路----------------------
如我在2楼所说,这个变量@temptablename
你赋一下值试下,如
declare 
    @temptablename varchar(100),
    @sql varchar(4000),@startdate varchar(20),@enddate varchar(20);
SET @temptablename='#TEMP'
  相关解决方案