開発端末の情報: Windows10 / VisualStudio2017 Professinal
データベースサーバ:Oracle12C
当該VisualStudioには ODTという OracleDataBaseとやりとりをスムースに進めるための開発ライブラリを導入中です。
SELECT発行の結果を 型付きデータセットに得られるよう、予めそのライブラリにて 無事に発行できるSQL文を作成しました。
以下の画像1のとおりです。(無事に結果を得られている)
画像1
その仕上がったSELECT文をデータセットのクエリ文に採用すると 以下の画像2のようになってしまいます。
画像2
###対策があれば教えてください。CASE文を解釈できない不具合でしょうか
ORACLE
1SELECT A.ITEMCODE AS 親品目コード, TO_CHAR(SUBSTR(A.RECIPECODE, - 4)) AS 構成パターン, B.INPUTORDER AS 工程順序, B.RECIPEORDER AS 出力順, 2'' AS 代替グループコード, TO_CHAR(SYSDATE, 'YYYYMMDD') AS 使用開始日, 3B.INPUTITEMCODE AS 子品目コード, 'R00001' AS 手順コード, 4C.OUTPUTVOLUME AS 親必要量, 5CASE WHEN D.STRENGTHUNITFLAGEX=-1 THEN ROUND((B.VOLUME * ABS(B.RATIOFLG) / D.STANDARDSTRENGTHUNITRATIO), B.DECIMALPOINTDEGIT) ELSE ROUND(B.VOLUME * ABS(B.RATIOFLG), B.DECIMALPOINTDEGIT) END AS 子投入量, 6CASE WHEN D.STRENGTHUNITFLAGEX=-1 THEN ROUND((B.VOLUME * ABS(B.RATIOFLG) / D.STANDARDSTRENGTHUNITRATIO), B.DECIMALPOINTDEGIT) ELSE ROUND(B.VOLUME * ABS(B.RATIOFLG), B.DECIMALPOINTDEGIT) END AS 子必要量, 7'0' AS 在庫引当区分, '' AS 代替品目選択区分, 1 AS 代替品目比率, 0 AS 引当優先順位, 8'' AS 着手日起算リードタイム, '' AS 完了日起算リードタイム, 29991231 AS 使用停止日, '0' AS 主原料フラグ, 9'0' AS 賦形薬フラグ, '' AS リビジョン, '' AS 改定日, B.BUDOMARIVOLUME AS 子固定必要量, 10'0' AS MRP対象外フラグ, ' ' AS 明細カテゴリ, '' AS 明細テキスト, '' AS 機器コード, 11D.STANDARDSTRENGTHUNITRATIO AS 標準力価換算係数, D.STRENGTHUNITFLAGEX AS 特殊力価品区分 12FROM SMV_RECIPEPROCESS A INNER JOIN 13SMV_PROCESSINPUT B ON A.INSTRUCTID = B.INSTRUCTID INNER JOIN 14SMV_PROCESSOUTPUT C ON B.INSTRUCTID = C.INSTRUCTID INNER JOIN 15CMV_ITEM D ON B.INPUTITEMCODE = D.ITEMCODE
質問にお使いのテーブルのCREATE TABLE文を https://teratail.com/help/question-tips#questionTips3-7 の [コード] で追加してください。
10年以上前にオラクル・サポートに相談して公開許可をもらったことですが、テーブル名や列名などにマルチバイト文字を使う時はテーブル名や列名をダブルクォートで囲まないと動作保証されません。
御見解ありがとうございます。
あいにく会社を出てしまったのですが、利用しているテーブルに全角のフィールド名の項目はなかったと思います。
AS名の場合もダブルクォートで括らないとダメでしょうか?? ま、明日確認すれば分かることですが
>ダブルクォートで囲まないと動作保証されません。
サポート契約が有効で明日パッチを適応したらダブルクォーティングしていないマルチバイトのテーブル名や列名などが全部エラーになっても自己責任です、という意味です。
直しておかないと後で恥ずかしい思いをするかと。
DEGIT
↓
DIGIT
見易さを考えたら
STANDARDSTRENGTHUNITRATIO
↓
STANDARD_STRENGTH_UNIT_RATIO
他略
くらいにしておいたと方が良いのでは?
データベースの項目名の話ですね? 導入した社外パッケージのデータベースですから 事実フィールド名がそうなっているもので どうすることもできません。
ネーミングがひどいシステムでまともに動作するソフトウェアに出会ったことはありません。心してかかってください。
VIEWを使ってまともなネーミングに直すって方法もありますが。
CREATE TABLE文を載せる気がなければ自己解決にしては?
回答1件
あなたの回答
tips
プレビュー