SQLコマンドの入力パラメータについて
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
Ace_Nagashim
投稿数: 105
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
以前の投稿「埋め込み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 です。
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
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
私もまだSQLコマンド不慣れなのですが
出力パラメーターが 得意先コード 1つだけだとすれば
SELECT * FROM 得意先マスター ':1' は
SELECT TOKCD FROM 得意先マスター ':1' のようにするのが正解なのぁと思いました。
出力パラメーターが 得意先コード 1つだけだとすれば
SELECT * FROM 得意先マスター ':1' は
SELECT TOKCD FROM 得意先マスター ':1' のようにするのが正解なのぁと思いました。
投票数:0
平均点:0.00
pu_mahalo
居住地: 大阪
投稿数: 775
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
こんにちは Puです
like % を V_SQL変数に埋め込む場合
"でくくらないとダメだった記憶が
私は ASCIIChr(39)&'%'で行ってます。
ヒントになれば
でわ〜でわ〜
like % を V_SQL変数に埋め込む場合
"でくくらないとダメだった記憶が
私は ASCIIChr(39)&'%'で行ってます。
ヒントになれば
でわ〜でわ〜
投票数:0
平均点:0.00
Ace_Nagashim
投稿数: 105
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
nkmtさん ありがとうございます。
SWLWCT * は当初、出力パラメータに全フィールドを定義していた際のなごりです。
Puさん ありがとうございます。
V:SQL文 の項目更新式を
'WHERE 得意先名 LIKE '&ASCIIChr(39)&'%'&Trim(入力得意先名)&'%'&ASCIIChr(39) に変更して実行したところ
'WHERE 得意先名 LIKE '付近に不適切な構文があります。
のエラーが発生します。に変わりました。
SWLWCT * は当初、出力パラメータに全フィールドを定義していた際のなごりです。
Puさん ありがとうございます。
V:SQL文 の項目更新式を
'WHERE 得意先名 LIKE '&ASCIIChr(39)&'%'&Trim(入力得意先名)&'%'&ASCIIChr(39) に変更して実行したところ
'WHERE 得意先名 LIKE '付近に不適切な構文があります。
のエラーが発生します。に変わりました。
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
'WHERE 得意先名 LIKE '
& ASCIIChr(39) & '%' & Trim(入力得意先名) & '%'
& ASCIIChr(39) じゃないですかね・・・・。
& ASCIIChr(39) & '%' & Trim(入力得意先名) & '%'
& ASCIIChr(39) じゃないですかね・・・・。
投票数:0
平均点:0.00
nagai
投稿数: 24
![半人前 半人前](../../uploads/rank3dbf8e94a6f72.gif)
後は、':1' の部分を :1 にすればいいのではないかと思います。
間違っていたらすいません。
間違っていたらすいません。
投票数:0
平均点:0.00
Ace_Nagashim
投稿数: 105
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
ご教示いただいた皆さん
ありがとうございました。
SELECT を得意先コードのみにし、
':1' を :1 に変更したらうまく動きました。
以前の投稿で文字型の変数を入力パラメータに
使うときは ' で括れば良いとあったのですが
違ってたみたいですね。
ありがとうございました。
SELECT を得意先コードのみにし、
':1' を :1 に変更したらうまく動きました。
以前の投稿で文字型の変数を入力パラメータに
使うときは ' で括れば良いとあったのですが
違ってたみたいですね。
投票数:0
平均点:0.00
nagai
投稿数: 24
![半人前 半人前](../../uploads/rank3dbf8e94a6f72.gif)
うまくいって良かったですね。
私は、埋め込みSQLを使用する場合は、SQL文の一部を入力パラメータにするのではなく、select文を全部入力パラメータにすることが多いです。
理由は、select文として間違いが無いかを確認しやすくなるためです。
私は、埋め込みSQLを使用する場合は、SQL文の一部を入力パラメータにするのではなく、select文を全部入力パラメータにすることが多いです。
理由は、select文として間違いが無いかを確認しやすくなるためです。
投票数:0
平均点:0.00