人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SQL Server2000(TSQL)で質問です。
文字列として計算式がある列にあります。この式を計算した結果を使ってさらに計算しようとしています。EVal 関数のような機能を実現するにはどうすればいいでしょうか。
ストアドプロシージャのなかに次のようにすれば計算結果が出てきますが、ストアドファンクションの中ではテンポラリテーブルは作れない、とエラーになりました。
CREATE FUNCTION dbo.EVal(@express as nvarchar(200))
RETURNS Real
AS BEGIN
Declare @express as nvarchar(200)
, @Ans as real

Set @Command = 'Select ' + @express

Print @Command

CREATE TABLE #result (res real)
Insert Into #result(res) execute( @Command )

SELECT @Ans = res FROM #result
DROP TABLE #result

RETURN @Ans
END


●質問者: ふるるP
●カテゴリ:コンピュータ 学習・教育
○ 状態 :キャンセル
└ 回答数 : 0/0件

▽最新の回答へ

質問者から

テンポラリじゃなく、通常のテーブルを用意してみました。
Create table wrkEvalAns(Ans Real)

CREATE FUNCTION dbo.EVal(@express as nvarchar(200))
RETURNS Real
AS BEGIN
Declare @Ans as real, @Command as nVarchar(200)

Set @Command = 'Select ' + @express

Insert Into wrkEvalAns(Ans) execute( @Command )

SELECT @Ans = Ans FROM wrkEvalAns

RETURN @Ans
END
今度はparseは通りましたが、実行しようとすると Delete, Insert, Execute がInvalid とエラーに。Function としては作れない気がしてきました・・・。
送られる計算式のパターンは決まっているので、自分で式を分解して計算させるしかないかも。


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ