错误,查询未执行,因为非法上下文

时间:2014-08-04 13:04:10

标签: sybase

以下查询弹出此错误 名称'名称'在这种情况下是非法的。这里只允许使用常量,常量表达式或变量。列名是非法的。

为什么?

 INSERT INTO UPGRADEd
         (SCRIPT_CODE,
        APP_NAME, 
        FILE_NAME,
        DATE_APPLIED,
        ACT_TYPE,
        STATUS,
          CREDENTIALS)
        VALUES
        ( 'scriptcode',
        '-appname-',
        '-filename-',
        getdate(),
       'PC',
       (select 
       case when count(1) = 1 then 'FAIL' else 'OK' end from sysobjects
       where name = ''),
       (select hostname from sysprocesses where spid = @@spid)
       )

1 个答案:

答案 0 :(得分:3)

您不能将insert .. valuesinsert..select混在一起。您应该将所有内容放在select语句中,如下所示

INSERT INTO UPGRADEd
(  SCRIPT_CODE, APP_NAME, FILE_NAME, DATE_APPLIED,
   ACT_TYPE, STATUS, CREDENTIALS) 
select 'scriptcode','-appname-','-filename-',getdate(),
       'PC', 
       case 
       when count(1) = 1 
         then 'FAIL' 
       else 'OK' end,
       (select hostname from sysprocesses where spid = @@spid) 
from sysobjects
where name = ''