電子書籍の厳選無料作品が豊富!

ジョブでバッチ処理を作成していますが、テーブルからある数式を文字列として取得し、文字列内にある変数を実際の値と置き換え、それを数式として処理する必要があります。
T-SQLにはその機能がないため、vbsのEVAL関数を使って処理しようと考えています。
テーブルから取得した数式を直接SQL文に記述し、「数式 AS フィールド名」として取得しようとも考えましたが、数式に^(べき乗)が存在し、数式をT-SQLに変換することが複雑になってしまうため、あきらめました。
SQLServerのジョブ(もしくはストアドプロシージャ内)からパラメータを与えてVBSを実行させ、VBSより結果を返してもらうコーディング(設定)はどうすればできるのでしょうか?

A 回答 (2件)

>a^2.1 という具合に小数点のべき乗の部分が


あ。すみません。読みきれてませんでした。
で、そのあたり調べてみると…。

T-SQLでのべき乗は、"^"では行われないみたいです。
"^"は、「ビットごとの排他的 OR」です。

ということで、Power関数を使用するようです。
declare @a as float
@a=2
power(cast(@a as float),0.5)
で、ルート2が帰ってきます。
(詳細はBooksOnline参照)

#言語によって、四則演算以外は違ってたりするので、ヘルプなどで確認するほうがいいかとおもいます。
    • good
    • 0
この回答へのお礼

SQLServerからVBSコードの実行方法だけわかれば良いと思っていたので説明不足で申し訳ありません。

計算式はユーザによって入力されるため、べき乗はPOWERではなく ^ で入力されます。

その式をPOWERに置き換えるプログラムを作成するのはかなりハードではないかと思われます。

データ変換サービスのローカルパッケージ内でActiveXスクリプトタスクを使ってテーブル全体を変換する方法も試しましたが、処理がかえって複雑になってしまいました。

テーブルから数値データを1件ずつFetchしながら計算処理させ、なおかつべき乗は^で記述できる方法があればベストなのですが...。

お礼日時:2007/01/25 14:24

>T-SQLにはその機能がないため


sp_executesqlとか、Executeメソッドとかを使ってできません?
(詳細はBooksOnline参照)
    • good
    • 0
この回答へのお礼

べき乗に小数点がなけれぱご教示いただいたsp_executesqlでできるのですが、a^2.1 という具合に小数点のべき乗の部分がエラーになってしまい、できませんでした。
別の方法を考えます。

どうもありがとうございました。

お礼日時:2007/01/23 15:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す