0

ねえ、私はSQL Server Compact Edition 3.5でiBATISを使用していて、副選択を実行しようとしています

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

トランザクションをコミットすると、SqlCeExceptionSSCE_M_QP_PARAMETERNOTALLOWED)が表示されます。

シンボル' @'が間違った場所にあること。これはで予測できない#ID#だと思いますSELECT。#ID#は列の名前ではなく、FORMINSTANCEに挿入する必要のある値です。これを修正するにはどうすればよいですか?

ty

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の標準パラメーター形式であったとしても、SQLServerCEはその場所で名前付きパラメーターをサポートしていません。

于 2009-10-19T12:20:32.070 に答える