以下查询弹出此错误 名称'名称'在这种情况下是非法的。这里只允许使用常量,常量表达式或变量。列名是非法的。
为什么?
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)
)
答案 0 :(得分:3)
您不能将insert .. values
与insert..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 = ''