zjcxc(邹建) ( ) 师傅,太神奇啦!!
   我按你说的,删除了存储过程,然后在查询分析器中执行创建存储过程的语句来创建存储过程,然后执行存储过程就行啦!   不过我还是不明白,为什么会这样? 之前我写好了存储过程,为什么不能执行呢?

解决方案 »

  1.   


    set ANSI_NULLS on
    set ANSI_WARNINGS on
    写到存储过程里再不行:exec ('set ANSI_NULLS on set ANSI_WARNINGS on insert into [BASE].[DBO].'+@ResultTable+' 
              select * from [BILL1].[SERVICE].[DBO].[Log]
                  where CallEnd>='''+@CarculTime +''' and CallEnd<'''+@EndTime+'''')--〉
    exec ('insert into [BASE].[DBO].'+@ResultTable+' 
              select * from [BILL1].[SERVICE].[DBO].[Log]
                  where CallEnd>='''+@CarculTime +''' and CallEnd<'''+@EndTime+'''')
      

  2.   

    搞错了exec ('insert into [BASE].[DBO].'+@ResultTable+' 
              select * from [BILL1].[SERVICE].[DBO].[Log]
                  where CallEnd>='''+@CarculTime +''' and CallEnd<'''+@EndTime+'''')--〉
    exec ('set ANSI_NULLS on set ANSI_WARNINGS on insert into [BASE].[DBO].'+@ResultTable+' 
              select * from [BILL1].[SERVICE].[DBO].[Log]
                  where CallEnd>='''+@CarculTime +''' and CallEnd<'''+@EndTime+'''')
      

  3.   

    i9988(冒牌j9988 V0.1) ,把
    set ANSI_NULLS on
    set ANSI_WARNINGS on
    写到存储过程里
    试过了,不行的。
      

  4.   

    zjcxc(邹建) ( ) 师傅,太神奇啦!!
       我按你说的,删除了存储过程,然后在查询分析器中执行创建存储过程的语句来创建存储过程,然后执行存储过程就行啦!   不过我还是不明白,为什么会这样? 之前我写好了存储过程,为什么不能执行呢?
      

  5.   


    set ANSI_NULLS on
    go
    set ANSI_WARNINGS on
    go
    写到存储过程里
      

  6.   

    看看这个就明白了:建议在存储过程的任何 CREATE TABLE 或 ALTER TABLE 语句中都为每列显式指定 NULL 或 NOT NULL,例如在创建临时表时。ANSI_DFLT_ON 和 ANSI_DFLT_OFF 选项控制 SQL Server 为列指派 NULL 或 NOT NULL 特性的方式(如果在 CREATE TABLE 或 ALTER TABLE 语句中没有指定的话)。如果某个连接执行的存储过程对这些选项的设置与创建该过程的连接的设置不同,则为第二个连接创建的表列可能会有不同的为空性,并且表现出不同的行为方式。如果为每个列显式声明了 NULL 或 NOT NULL,那么将对所有执行该存储过程的连接使用相同的为空性创建临时表。在创建或更改存储过程时,SQL Server 将保存 SET QUOTED_IDENTIFIER 和 SET ANSI_NULLS 的设置。执行存储过程时,将使用这些原始设置。因此,所有客户端会话的 SET QUOTED_IDENTIFIER 和 SET ANSI_NULLS 设置在执行存储过程时都将被忽略。在存储过程中出现的 SET QUOTED_IDENTIFIER 和 SET ANSI_NULLS 语句不影响存储过程的功能。其它 SET 选项(例如 SET ARITHABORT、SET ANSI_WARNINGS 或 SET ANSI_PADDINGS)在创建或更改存储过程时不保存。如果存储过程的逻辑取决于特定的设置,应在过程开头添加一条 SET 语句,以确保设置正确。从存储过程中执行 SET 语句时,该设置只在存储过程完成之前有效。之后,设置将恢复为调用存储过程时的值。这使个别的客户端可以设置所需的选项,而不会影响存储过程的逻辑。