0

嘿,我正在将 iBATIS 与 SQL Server Compact Edition 3.5 一起使用并尝试进行子选择

INSERT INTO FORMINSTANCE (ID, ID_FORM) 
  SELECT #ID#, f.ID 
  FROM FORM f 
  WHERE ID_PROCESS='10804'

当我提交事务时,我得到一个SqlCeException( SSCE_M_QP_PARAMETERNOTALLOWED)。

符号“ @”在错误的位置。我认为这是 #ID# 在SELECT. #ID# 不是列的名称,它是应该插入 FORMINSTANCE 的值 我该如何解决这个问题?

4

2 回答 2

1

如果列名的 # 部分...</p>

INSERT INTO FORMINSTANCE (ID, ID_FORM) 
SELECT [#ID#], f.ID 
FROM   FORM f 
WHERE  ID_PROCESS='10804'

如果出于某种奇怪的原因,您希望在位置 #1 选择一个动态列(不是我真的认为这是您要做的,但无论如何),您可以逃脱:

INSERT INTO FORMINSTANCE (ID, ID_FORM) 
SELECT 
  CASE 
    WHEN @ID = 'foo' THEN foo
    WHEN @ID = 'bar' THEN bar
    ELSE NULL
  END, 
  f.ID 
FROM
  FORM f 
WHERE
  ID_PROCESS='10804'
于 2009-10-19T12:14:29.460 回答
0

如果#ID# 不在FORM 表中(即参数),我认为你不能。即使#ID# 采用@ID 的标准参数格式,SQL Server CE 也不支持该位置的命名参数。

于 2009-10-19T12:20:32.070 回答