AccessからSQL Server2005へ作り変えています。
質問させていただきます。
テーブル名「伝票」の中身
製品 在庫数 注文数
A 12 10
B 11 13
C 16 11
このテーブルから在庫数と注文数を比較して、
注文数が在庫数以内の場合は・・・OK
注文数が在庫数以上の場合は・・・NG
イメージとしては以下のようにななります。
製品 在庫数 注文数 判定
A 12 10 OK
B 11 13 NG
C 16 11 OK
これをAccessのクエリで表現する場合は、判定にVBAを使っています。
(テーブルに判定という項目はありません)
SQL Server2005ではスカラ値関数を作って、それをストアドプロシージャで
呼び出せば可能ですよね・・・?
そこで以下の悪戦苦闘しながら以下のスカラ値関数を作りました。
ALTER FUNCTION dbo.HANTEI
(@ZAIKO int,
@TYUMON int,
@HANTEI nvarchar(2))
RETURNS nvarchar(2)
AS
BEGIN
IF @ZAIKO >= @TYUMON
SET @HANTEI = 'OK'
ELSE
SET @HANTEI = 'NG'
RETURN @HANTEI
END
これをストアドプロシージャで実行すると、パラメータで指定したHANTEI がテーブルにないので
エラーになります。テーブルに判定に相当する項目を用意すると正しく結果が出ます。
テーブルに判定項目を用意せずに正しい結果を出したいのですがどうすればよいですか?
よろしくお願いします。
関数をどうしても作りたいのでしょうか?
この程度の操作なら、SQL Serverの基本的な機能で行えますが?
select
製品,在庫数,注文数,
case when 在庫数>=注文数 then 'OK' else 'NG' end as 判定
from 伝票
>これをストアドプロシージャで実行すると、パラメータで指定したHANTEI がテーブルにないのでエラーになります。
>テーブルに判定に相当する項目を用意すると正しく結果が出ます
どうしても関数にしたいなら、どのように関数を呼んでいるか、その辺のソースコードを貼り付けて見せてもらえませんか?
お礼
回答ありがとうございます。 >関数をどうしても作りたいのでしょうか? いいえ、できれば何でもかまいません。 来週出社してから試してみます。 取り急ぎ御礼まで・・・。