ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

SQLコマンドの入力パラメータについて

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 .4 .5 .6 .7 | 投稿日時 2016-7-22 11:06
Ace_Nagashim  一人前   投稿数: 105
以前の投稿「埋め込みSQL(SQLコマンド)へのI/Oが分かりません」を参考にして
SQLコマンドの入力パラメーターにSQL文を記述する方式を検証しています。

親タスクで 得意先名 を入力し、子タスクで該当する得意先を
一覧表示させるようにしています。

最終的には複数の条件指定の組み合わせで抽出できるようにしたいと思っています。

親タスクで文字型変数 V:SQL文 を定義し、、
'WHERE 得意先名 LIKE %'&Trim(入力得意先名)&'%' で項目更新して子タスクを
CALLしています。

子タスクのSQLコマンドは
SELECT * FROM 得意先マスター ':1'
入力パラメータに rtrim(V:SQL文) を式で渡しています。
出力パラメーターは 得意先コード を指定しています。

これで 入力得意先名 に 山田 を入力して実行してみると
'WHERE 得意先名 LIKE %山田%' 付近に不適切な構文があります。とのDBエラーが発生します。

このエラーの原因がわからなくて困ってます。
どなたかご教示をお願いします。

実行環境は
Win10Pro(64)
MagicV10 Ver10.1 SP4b
SQL Server2012 EXPRESS です。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016-7-22 11:23
nkmt  長老   投稿数: 1668
私もまだSQLコマンド不慣れなのですが

出力パラメーターが 得意先コード 1つだけだとすれば
SELECT * FROM 得意先マスター ':1' は
SELECT TOKCD FROM 得意先マスター ':1' のようにするのが正解なのぁと思いました。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016-7-22 11:26
pu_mahalo  長老 居住地: 大阪  投稿数: 775
こんにちは Puです

like % を V_SQL変数に埋め込む場合
"でくくらないとダメだった記憶が

私は ASCIIChr(39)&'%'で行ってます。
ヒントになれば
でわ〜でわ〜
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016-7-22 11:55
Ace_Nagashim  一人前   投稿数: 105
nkmtさん ありがとうございます。
SWLWCT * は当初、出力パラメータに全フィールドを定義していた際のなごりです。

Puさん ありがとうございます。
V:SQL文 の項目更新式を
'WHERE 得意先名 LIKE '&ASCIIChr(39)&'%'&Trim(入力得意先名)&'%'&ASCIIChr(39) に変更して実行したところ
'WHERE 得意先名 LIKE '付近に不適切な構文があります。
のエラーが発生します。に変わりました。

投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016-7-22 12:01
nkmt  長老   投稿数: 1668
'WHERE 得意先名 LIKE '
& ASCIIChr(39) & '%' & Trim(入力得意先名) & '%'
& ASCIIChr(39) じゃないですかね・・・・。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016-7-22 13:12
nagai  半人前   投稿数: 24
後は、':1' の部分を :1 にすればいいのではないかと思います。

間違っていたらすいません。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016-7-22 15:07
Ace_Nagashim  一人前   投稿数: 105
ご教示いただいた皆さん
ありがとうございました。

SELECT を得意先コードのみにし、
':1' を :1 に変更したらうまく動きました。

以前の投稿で文字型の変数を入力パラメータに
使うときは ' で括れば良いとあったのですが
違ってたみたいですね。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016-7-22 15:20
nagai  半人前   投稿数: 24
うまくいって良かったですね。

私は、埋め込みSQLを使用する場合は、SQL文の一部を入力パラメータにするのではなく、select文を全部入力パラメータにすることが多いです。

理由は、select文として間違いが無いかを確認しやすくなるためです。
投票数:0 平均点:0.00

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約