0

以下の例のように、「in」を使用するには、BDE を使用して Delphi の SQL にパラメータを渡す必要があります。

select * from customers where id in (:p_in)

渡す必要があります: p_in 顧客のリスト。しかしQuery.ParamByName.('p_in').AsString: = '1, 2,3 ',、それはうまくいきませんでした..配列を作成する必要がありますか? またはAsVariantで渡されましたか?

4

3 に答える 3

1

BDE は推奨されていないため、パラメーターの置換が可能な最新のコンポーネントの使用を検討してください。例:

SomeDataSet.SQL.Add('select foo from bar where baz in (:TESTIDS)');
SomeDataSet.DeclareVariable('TESTIDS', otSubst);  // <- this does the trick
// Place here some loop that fills the list of test-id separated by a ","
// And then:
SomeDataSet.SetVariable('TESTIDS', myIDList);  // Drop the list into the variable

コンポーネントの製造元が異なれば、これに異なる名前が使用される場合があります。

于 2013-04-09T06:43:47.713 に答える
1

これを試して :

p_in  : String ;

for i := 0 to Customerlist.count do
   p_in := p_in +Customerlist[i] + ','; 

MyQuery.text := 'select * from customers where id in (' + p_in  + ' )' ;
于 2013-04-08T21:11:27.573 に答える