CREATE PROCDURE ProcSpInsertCREATE PROCDURE PROC_DBINIT_INSERT
DECLARE @SPID VARCHAR(50)
DECLARE @USERID VARCHAR(50)
DECLARE @USERNAME VARCHAR(50)
DECLARE @USERPWD VARCHAR(50)
DECLARE @REGCODE VARCHAR(50)
DECLARE @ROLE VARCHAR(50)
DECLARE @USERSTATUS INT
DECLARE @LANAREA VARCHAR(256)
DECLARE @CREATETIMER VARCHAR(50)
DECLARE @l_UUID5 UNIQUEIDENTIFIER
AS
BEGIN
  SELECT @CREATETIMER = getdate()
  SELECT @l_UUID5 = NEWID()
  INSERT [TUserInfo] ( [Id] , [UserId] , [SpId] , [UserName] , [UserPassword] , [RegCode] , [Role] , [UserStatus] , [LanArea] , [CreateDate] )
  VALUES ( @l_UUID5  , @USERID , @SPID , @USERNAME, '' , @REGCODE , '0' , 1 , @LANAREA , @CREATETIMER )
END

EXEC PROC_DBINIT_INSERT'admin','60000004','admin','123444','10000001'我用ADO执行把这段字符串, catch捕获异常都是报“PROCDURE附近有语法错误”, 我存储过程
相当的烂,各位大虾帮我看看啊

解决方案 »

  1.   

    ---晕  原来是procedure拼写的错误
    CREATE PROCEDURE PROC_DBINIT_INSERT
    DECLARE @SPID VARCHAR(50)    
    DECLARE @USERID VARCHAR(50)    
    DECLARE @USERNAME VARCHAR(50)
    DECLARE @USERPWD VARCHAR(50)
    DECLARE @REGCODE VARCHAR(50)
    DECLARE @ROLE VARCHAR(50)    
    DECLARE @USERSTATUS INT
    DECLARE @LANAREA VARCHAR(256)
    DECLARE @CREATETIMER VARCHAR(50)
    DECLARE @l_UUID5 UNIQUEIDENTIFIER                                    
    AS
    BEGIN
      SELECT @CREATETIMER = getdate()
      SELECT @l_UUID5 = NEWID()        
      INSERT [TUserInfo] ( [Id] , [UserId] , [SpId] , [UserName] , [UserPassword] , [RegCode] , [Role] , [UserStatus] , [LanArea] , [CreateDate] )
      VALUES ( @l_UUID5  , @USERID , @SPID , @USERNAME, '' , @REGCODE , '0' , 1 , @LANAREA , @CREATETIMER )
    END                        
                                                
    EXEC PROC_DBINIT_INSERT'admin','60000004','admin','123444','10000001'
      

  2.   

    CREATE PROCDURE PROC_DBINIT_INSERT
    @SPID VARCHAR(50)    
    ,@USERID VARCHAR(50)    
    ,@USERNAME VARCHAR(50)
    ,@LANAREA VARCHAR(256)
    ,@CREATETIMER VARCHAR(50)
                                        
    AS
    BEGIN
      DECLARE @l_UUID5 UNIQUEIDENTIFIER
      SELECT @CREATETIMER = getdate()
      SELECT @l_UUID5 = NEWID()        
      INSERT [TUserInfo] ( [Id] , [UserId] , [SpId] , [UserName] , [UserPassword] , [RegCode] , [Role] , [UserStatus] , [LanArea] , [CreateDate] )
      VALUES ( @l_UUID5  , @USERID , @SPID , @USERNAME, '' , @REGCODE , '0' , 1 , @LANAREA , @CREATETIMER )
    END                        
                                                
    EXEC PROC_DBINIT_INSERT'admin','60000004','admin','123444','10000001'
      

  3.   

    CREATE PROCEDURE PROC_DBINIT_INSERT as
    DECLARE @SPID VARCHAR(50)    
    DECLARE @USERID VARCHAR(50)    
    DECLARE @USERNAME VARCHAR(50)
    DECLARE @USERPWD VARCHAR(50)
    DECLARE @REGCODE VARCHAR(50)
    DECLARE @ROLE VARCHAR(50)    
    DECLARE @USERSTATUS INT
    DECLARE @LANAREA VARCHAR(256)
    DECLARE @CREATETIMER VARCHAR(50)
    DECLARE @l_UUID5 UNIQUEIDENTIFIER                                    
    BEGIN
      SELECT @CREATETIMER = getdate()
      SELECT @l_UUID5 = NEWID()        
      INSERT [TUserInfo] ( [Id] , [UserId] , [SpId] , [UserName] , [UserPassword] , [RegCode] , [Role] , [UserStatus] , [LanArea] , [CreateDate] )
      VALUES ( @l_UUID5  , @USERID , @SPID , @USERNAME, '' , @REGCODE , '0' , 1 , @LANAREA , @CREATETIMER )
    END                        
                                                
    EXEC PROC_DBINIT_INSERT'admin','60000004','admin','123444','10000001'
      

  4.   

    如果你的提供的参数少于你的过程定义的列表时,要指明参数名 @spid = '???',同时不用的参数最好加上缺少
      

  5.   

    改过之后又报{" 'DECLARE' 附近有语法错误。" (1)}
    这次没写错吧~
      

  6.   


    8楼:CREATE PROCDURE PROC_DBINIT_INSERT
    @USERID VARCHAR(50)    
    ,@SPID VARCHAR(50)
    ,@USERNAME VARCHAR(50)
    ,@LANAREA VARCHAR(256)
    ,@CREATETIMER VARCHAR(50)
                                        
    AS
    BEGIN
      DECLARE @l_UUID5 UNIQUEIDENTIFIER
      SELECT @CREATETIMER = getdate()
      SELECT @l_UUID5 = NEWID()        
      INSERT [TUserInfo] ( [Id] , [UserId] , [SpId] , [UserName] , [UserPassword] , [RegCode] , [Role] , [UserStatus] , [LanArea] , [CreateDate] )
      VALUES ( @l_UUID5  , @USERID , @SPID , @USERNAME, '' , @REGCODE , '0' , 1 , @LANAREA , @CREATETIMER )
    END                        
                                                
    EXEC PROC_DBINIT_INSERT'admin','60000004','admin','123444','10000001'
      

  7.   


    CREATE PROCDURE PROC_DBINIT_INSERT
    @USERID VARCHAR(50)    
    ,@SPID VARCHAR(50)
    ,@USERNAME VARCHAR(50)
    ,@LANAREA VARCHAR(256)
    ,@CREATETIMER VARCHAR(50)
                                        
    AS
    BEGIN 
      INSERT [TUserInfo] ( [Id] , [UserId] , [SpId] , [UserName] , [UserPassword] , [RegCode] , [Role] , [UserStatus] , [LanArea] , [CreateDate] )
      VALUES (NEWID(), @USERID , @SPID , @USERNAME, '' , @REGCODE , '0' , 1 , @LANAREA , getdate() )
    END                        
                                                
    EXEC PROC_DBINIT_INSERT'admin','60000004','admin','123444','10000001'
      

  8.   

    CREATE PROC
    这样就好了,参数对应
      

  9.   

    sSql.Format("CREATE PROCEDURE PROC_DBINIT_INSERT\n \
     @SPID VARCHAR(50),\n \
     @USERID VARCHAR(50),\n \
     @USERNAME VARCHAR(50),\n \
     @USERPWD VARCHAR(50),\n \
     @REGCODE VARCHAR(50),\n \
     @ROLE VARCHAR(50),\n \
     @USERSTATUS INT,\n \
     @LANAREA VARCHAR(256),\n \
     @CREATETIMER VARCHAR(50)\n \
     AS\n \
     BEGIN\n \
     DECLARE @l_UUID5 UNIQUEIDENTIFIER\n \
     SELECT @CREATETIMER = getdate()\n \
     SELECT @l_UUID5 = NEWID()\n \
     INSERT [TUserInfo] ( [Id] , [UserId] , [SpId] , [UserName] , [UserPassword] , [RegCode] , [Role] , [UserStatus] , [LanArea] , [CreateDate] )\n \
     VALUES ( @l_UUID5  , @USERID , @SPID , @USERNAME, '' , @REGCODE , '0' , 1 , @LANAREA , @CREATETIMER )\n \
     END\n \
     EXEC PROC_DBINIT_INSERT '%s','%s','%s','%s','%s'\n\n",
     strUserid,
     strSpid,
     strUserName,
     strRegCode,
     strLanArea);
    pConnection->Execute(_bstr_t(sSql),&vReturn,adExecuteNoRecords);
    代码调试运行通过了, 但为什么数据没有插进去? 这个语句这样插入有问题吗?
      

  10.   

    我自己写的存储过程就有declare,不对吗
    CREATE             PROCEDURE 更新资料
     AS
    begin--该程序为定期运行,周期约为每天三次,移动考勤门禁记录和就餐记录--第一阶段,考勤资料的处理--第一步:设定条件,显示工作月declare 
    @startday varchar(10),
    @endday varchar(10),
    @today datetime,
    @today2 datetime
    set @today = getdate()
    --后加入
    set @today2 = convert(varchar(10),@today,111)if day(@today) <= 15set @startday = convert(varchar(8),dateadd(month,-2,@today),111) + '25'elseset @startday = convert(varchar(8),dateadd(month,-1,@today),111) + '25'set @endday = convert(varchar(10),@today,111)--第二步:将rsa241表中未导入的数据导入T_HR191表中,并注意消除空格,且注意过滤异常数据insert into T_HR191
    (sdate,
    stime,
    event_code,
    event_card,
    ncuip,
    device_id,
    event_des,
    door_name,
    site_id,
    ip,
    device_name,
    emp_id,
    emp_name,
    emp_dep)
    select
    rtrim(abc.sdate),
    rtrim(abc.stime),
    rtrim(abc.event_code),
    rtrim(abc.event_card),
    rtrim(abc.ncuip),
    rtrim(abc.device_id),
    rtrim(abc.event_des),
    rtrim(abc.door_name),
    rtrim(abc.site_id),
    rtrim(abc.ip),
    rtrim(abc.device_name),
    rtrim(abc.emp_id),
    rtrim(abc.emp_name),
    rtrim(abc.emp_dep)
    from rs2000.dbo.rsa241 abc
    left join T_HR191 abd
    on abc.sdate = abd.sdate
    and abc.stime = abd.stime
    and abc.event_code = abd.event_code
    and abc.event_card = abd.event_card
    and abc.ncuip = abd.ncuip
    and abc.device_id = abd.device_id
    where isdate(abc.sdate) = 1
    and isdate(abc.stime) = 1
    and abd.sdate is null
    and abd.stime is null
    and abd.event_code is null
    and abd.event_card is null
    and abd.ncuip is null
    and abd.device_id is null
    and abc.sdate <= @endday
    and abc.sdate >= @startday
    and abc.event_code not like '030[2,3]'
    order by abc.sdate asc, abc.stime asc--第三步:删除表rsa241中日期错误的数据delete rs2000.dbo.rsa241
    where isdate(sdate) = 0
    or isdate(stime) = 0--第四步:删除表rsa241表中已经导入T_HR191表中数据delete rs2000.dbo.rsa241
    from T_HR191 abd
    where rs2000.dbo.rsa241.sdate = abd.sdate
    and rs2000.dbo.rsa241.stime = abd.stime
    and rs2000.dbo.rsa241.event_code = abd.event_code
    and rs2000.dbo.rsa241.event_card = abd.event_card
    and rs2000.dbo.rsa241.ncuip = abd.ncuip
    and rs2000.dbo.rsa241.device_id = abd.device_id--第五步:只讲考勤部分的记录导入到T_HR108表中insert into T_HR108
    (
    HR108_01,
    HR108_02,
    HR108_03,
    HR108_04,
    HR108_05,
    HR108_06,
    HR108_07,
    HR108_08,
    HR108_09,
    HR108_10,
    HR108_11,
    HR108_12,
    HR108_13)
    select 
    rtrim(abc.sdate),
    rtrim(abc.stime),
    rtrim(abc.event_code),
    rtrim(abc.event_card),
    rtrim(abc.ncuip),
    rtrim(abc.device_id),
    cast((abc.sdate + ' ' + abc.stime) as datetime) HR108_07,
    rtrim(abf.HR002_05),
    rtrim(abd.HR101_03),
    rtrim(abd.HR101_04),
    rtrim(abe.HR104_03),
    rtrim(abe.HR104_04),
    rtrim(abd.HR101_08)
    from T_HR191 abc
    left join T_HR101 abd
    on abc.event_card = abd.HR101_01
    left join T_HR104 abe
    on abc.ncuip = abe.HR104_01
    and abc.device_id = abe.HR104_02
    left join T_HR002 abf
    on abc.sdate = abf.HR002_01
    left join T_HR108 abg
    on abc.sdate = abg.HR108_01
    and abc.stime = abg.HR108_02
    and abc.event_code = abg.HR108_03
    and abc.event_card = abg.HR108_04
    and abc.ncuip = abg.HR108_05
    and abc.device_id = abg.HR108_06
    where 
    (
    abe.HR104_04 = '上班'
    or abe.HR104_04 = '下班'
    or abe.HR104_04 = '办公' 
    )
    and len(abc.event_card) = 10
    and isnumeric(abc.event_card) = 1
    and abg.HR108_01 is null
    and abg.HR108_02 is null
    and abg.HR108_03 is null
    and abg.HR108_04 is null
    and abg.HR108_05 is null
    and abg.HR108_06 is null--第六步:将25日下午上班的数据月份归属归并到下一个月update T_HR108
    set HR108_08 = convert(varchar(6),dateadd(month,1,HR108_07),112)
    where right(HR108_01,2) = '25'
    and HR108_02 > '15:30:00'
    and HR108_12 = '上班'
    and HR108_08 != convert(varchar(6),dateadd(month,1,HR108_07),112)--第七步:将S_SK表中未导入的数据导入T_HR192表中,并注意消除空格,还有时间段,并利用后两个未使用的字段表示日期和餐种insert into T_HR192
    (
    SK01,
    SK02,
    SK03,
    SK04,
    SK05,
    SK06,
    SK07,
    SK08,
    SK09,
    SK10,
    SK11,
    SK12
    )
    select 
    rtrim(abc.SK01),
    rtrim(abc.SK02),
    rtrim(abc.SK03),
    abc.SK04,
    abc.SK05,
    abc.SK06,
    abc.SK07,
    rtrim(abc.SK08),
    abc.SK09,
    convert(varchar(10),dateadd(minute,-390,abc.SK07),111),
    rtrim(abc.SK11),
    case
    when convert(varchar(10),abc.SK07,114) >= '06:30:00' and convert(varchar(10),abc.SK07,114) < '15:30:00' then '1中餐'
    when convert(varchar(10),abc.SK07,114) >= '15:30:00' and convert(varchar(10),abc.SK07,114) < '22:00:00' then '2晚餐'
    else '3夜餐'
    end
    from openrowset('SQLOLEDB','10.0.0.18';'sa';'299792458',ID_Eatery.dbo.S_SK) abc
    left join 
    T_HR192 abd
    on abc.SK03 = abd.SK03
    and abc.SK07 = abd.SK07
    and abc.SK08 = abd.SK08
    where 
    abd.SK03 is null 
    and abd.SK07 is null 
    and abd.SK08 is null
    and abc.SK07 > cast((@startday + ' 15:30:00') as datetime)
    and abc.SK07 <= @today
    order by 
    abc.SK07 asc, 
    abc.SK08 asc, 
    abc.SK03 asc
    --备份原始数据
    insert into S_SK_bak
    (SK01,
    SK02,
    SK03,
    SK04,
    SK05,
    SK06,
    SK07,
    SK08,
    SK09,
    SK10,
    SK11,
    SK12)
    select 
    SK01,
    SK02,
    SK03,
    SK04,
    SK05,
    SK06,
    SK07,
    SK08,
    SK09,
    SK10,
    SK11,
    SK12
    from openrowset('SQLOLEDB','10.0.0.18';'sa';'299792458',ID_Eatery.dbo.S_SK)
    where SK07 > cast((@startday + ' 15:30:00') as datetime)
    and SK07 <= @today2
    --删除2个月前备份的数据
    delete S_SK_bak
    where SK07 <= convert(varchar(8),dateadd(month,-2,@today),111) + '25'
    --第八步:删除S_SK中已经导入的记录(如果停电此命令会删除未导入的记录,因此加上以上备份的步骤)delete openrowset('SQLOLEDB','10.0.0.18';'sa';'299792458',ID_Eatery.dbo.S_SK)
    where SK07 > cast((@startday + ' 15:30:00') as datetime)
    and SK07 < @today2
    --===================================上面@today2已修改,原来是@today--第九步:将离职人员的卡资料更新update T_HR101
    set HR101_05 = '离职卡'
    from (select HR101_01
    from T_HR101 abc
    left join ldmis2000.dbo.A01 abd
    on abc.HR101_03 = abd.A0190
    where abc.HR101_05 = '在岗卡'
    and abd.A0191 != '在岗人员') abc
    where T_HR101.HR101_01 = abc.HR101_01--第十步:更新人员表中某些资料(掉卡的人的原资料未挂失)
    while EXISTS
    (select 1
    from V_HR101
    group by HR101_03
    having count(*) > 1)beginupdate T_HR101
    set HR101_05 = '挂失卡'
    from 
    (select HR101_03,min(HR101_02) smcard,count(*) num
    from V_HR101
    group by HR101_03
    having count(*) > 1) abc
    where T_HR101.HR101_02 = abc.smcardend--第十一步:根据更新资料更新门禁系统的名单--清空名单
    delete rs2000.dbo.rsa102--更新名单
    insert into rs2000.dbo.rsa102
    (group_id,
    rsa102_01,
    rsa102_02,
    rsa102_03,
    rsa102_05,
    rsa102_06,
    rsa102_08,
    rsa102_22,
    rsa102_29)
    select 'P09304140001',
    rtrim(HR101_03),
    rtrim(HR101_04),
    rtrim(HR101_01),
    '20040207',
    '20091230',
    '1',
    rtrim(HR101_04),
    '1'
    FROM dbo.T_HR101 abc LEFT OUTER JOIN
          dbo.T_HR102 abd ON abc.HR101_05 = abd.HR102_02 LEFT OUTER JOIN
          dbo.T_HR103 abe ON abc.HR101_08 = abe.HR103_02
    WHERE (abd.HR102_03 = 1) AND (abe.HR103_03 = 1)--第十二步:根据更新资料更新门禁系统的门禁权限delete T_HR106delete T_HR107insert into T_HR107
    (HR107_01,HR107_02)
    select rsa228_01,
    rsa228_02
    from rs2000.dbo.rsa228
    where rsa228_01 != 1
    and rsa228_01 != 6
    and rsa228_01 != 7
    and rsa228_01 != 13update T_HR107
    set HR107_02 = T_HR101.HR101_03
    from T_HR101
    where T_HR107.HR107_02 = T_HR101.HR101_02insert into T_HR106
    (HR106_01,HR106_02)
    select HR107_01,HR107_02
    from T_HR107
    group by HR107_01,HR107_02delete rs2000.dbo.rsa228insert into rs2000.dbo.rsa228 (
    site_id,
    rsa228_01,
    rsa228_02,
    flag_ty,
    upd_time,
    upd_nam,
    rsa228_03)
    select
    'P09304140001',
    HR106_01,
    rtrim(HR106_02),
    '1',
    '20040815120000',
    'ADMIN',
    ''
    from T_HR106insert into rs2000.dbo.rsa228 (
    site_id,
    rsa228_01,
    rsa228_02,
    flag_ty,
    upd_time,
    upd_nam,
    rsa228_03)
    select
    'P09304140001',
    1,
    rtrim(rsa102_01),
    '1',
    '20040815120000',
    'ADMIN',
    ''
    from rs2000.dbo.rsa102insert into rs2000.dbo.rsa228 (
    site_id,
    rsa228_01,
    rsa228_02,
    flag_ty,
    upd_time,
    upd_nam,
    rsa228_03)
    select
    'P09304140001',
    6,
    rtrim(rsa102_01),
    '1',
    '20040815120000',
    'ADMIN',
    ''
    from rs2000.dbo.rsa102insert into rs2000.dbo.rsa228 (
    site_id,
    rsa228_01,
    rsa228_02,
    flag_ty,
    upd_time,
    upd_nam,
    rsa228_03)
    select
    'P09304140001',
    7,
    rtrim(rsa102_01),
    '1',
    '20040815120000',
    'ADMIN',
    ''
    from rs2000.dbo.rsa102insert into rs2000.dbo.rsa228 (
    site_id,
    rsa228_01,
    rsa228_02,
    flag_ty,
    upd_time,
    upd_nam,
    rsa228_03)
    select
    'P09304140001',
    13,
    rtrim(rsa102_01),
    '1',
    '20040815120000',
    'ADMIN',
    ''
    from rs2000.dbo.rsa102end
    GO
      

  11.   

    将PROCDURE改为PROCDURE,同时将AS前的DECLARE都去掉
      

  12.   

    CREATE Procedure PROC_DBINIT_INSERT
    @SPID VARCHAR(50),    
    @USERID VARCHAR(50),    
    @USERNAME VARCHAR(50),
    @USERPWD VARCHAR(50),
    @REGCODE VARCHAR(50),
    @ROLE VARCHAR(50),    
    @USERSTATUS INT,
    @LANAREA VARCHAR(256),
    @CREATETIMER VARCHAR(50),
    @l_UUID5 UNIQUEIDENTIFIER                                    
    AS
    BEGIN
      SELECT @CREATETIMER = getdate()
      SELECT @l_UUID5 = NEWID()        
      INSERT [TUserInfo] ( [Id] , [UserId] , [SpId] , [UserName] , [UserPassword] , [RegCode] , [Role] , [UserStatus] , [LanArea] , [CreateDate] )
      VALUES ( @l_UUID5  , @USERID , @SPID , @USERNAME, '' , @REGCODE , '0' , 1 , @LANAREA , @CREATETIMER )
    END                        
                                                
    EXEC PROC_DBINIT_INSERT'admin','60000004','admin','123444','10000001'