• 締切済み

ユーザー関数を作成したいのですが

sqlserver2005の初心者です いままでaccessで標準モジュールにユーザー関数を作成していました Function 年齢(SEI) As Integer Dim SEIDATE, HONSEI, UNSEI, HONY, HONM, UPD Dim MH, DH As Integer MH = 0: DH = 0 SEIDATE = DateValue(SEI) If Not IsDate(SEI) Then Exit Function UPD = DateSerial(Year(Date), Month(Date), Day(Date) + 1) If Val(Mid(SEIDATE, 6, 2)) > Val(Mid(Date, 6, 2)) Or (Val(Mid(SEIDATE, 6, 2)) = Val(Mid(Date, 6, 2)) And Val(Right(SEIDATE, 2)) > Val(Right(Date, 2))) _ Or Right(Date, 5) = "12/31" Then MH = 1 HONY = DateValue(DateSerial(Year(SEIDATE) + MH, Month(Date), Day(UPD))) UNENREI = DateDiff("YYYY", HONY, UPD) 年齢 = UNENREI '-------------SYAIN990112年齢勤続クエリー用------------------ If Val(Right(SEIDATE, 2)) > Val(Right(Date, 2)) Then DH = 1 HONM = DateValue(DateSerial(Year(Date) - MH, Month(SEIDATE) + DH, Day(UPD))) UGETUREI = DateDiff("M", HONM, UPD) HONSEI = DateValue(DateSerial(Year(Date), Month(Date) - DH, Day(SEIDATE))) UHIREI = DateDiff("D", HONSEI, UPD) End Function 宣言がない変数はpublic変数を設定しています ここに例 s33/10/05の生年月日を飛ばして戻り値をえています sqlserverで作成する場合テーブル関数なのかスカラ関数なのかわかりません、 余計な部分ははぶいていただいて簡単でけっこうですのでsqlserverでの記述をおしえていただけないでしょうか

みんなの回答

  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.1

SQl SERVER は ACCESS のMDB と違い、クエリの中に関数を埋め込むことはできないというかやりか方がまったく違います。 従来の 標準モジュールとまったく同じとは行きません。 Sql SERVER 2005 は Express版ですか? それとも Standard もしくは Developper ですか? もし、ライセンスを持っていて Express版以外なら SQL Server Management Studio からエクスプローラ風に簡単にDB の操作できるようになっています。 ツリーの中のプログラミングに「関数」があるはずです。 ここにユーザー関数を記述します。 いずれにせよ SQL文とストアド、関数の作成方法の知識が必要になります。 検索サイト(Google)で→ Create Function Sql server 2005 を検索してください。 マイクロソフト のサイト http://www.microsoft.com/japan/msdn/sqlserver/selfstudy/#dev などを参考にしてください。 もし SQL CLR を用いるのであれば VB.NET でも開発できるようですが そこまでしなくてもたいていは SQL で作成した関数で間に合うのではないかと思います。 もしくは関数にしなくてもストアド内で完結してしまうかです。 提示している 関数の仕様、つまりやりたいことを教えてください。 アドバイスできると思います。 あと、誰かすでに作成しているフリーの関数のリソースなどを用いることも可能です。

hiyotom
質問者

お礼

なんとかストアドからスカラ値関数をよびだして計算することができました、ありがとうございました 追記で記述を公開しましたのでご指摘おねがいします それから関数はテーブル値関数もありますがどちらで作成すればよいでしょうか

hiyotom
質問者

補足

早速の返信ありがとうございます sqlserver2005はマイクロソフトの180日間評価版でやっています 3月にStandard板を購入してありますがosがxpproのため5月にpcとwin2003serverを購入してsqlserver2005Standardをインストールするよていです 今日少し私なりに考えて試してみました、動作はエラーなくできました 後日その記述を公開しますのでご指摘いただきたいとおもいます やりたいことはinsertストアドで生年月日をなげてやると年齢がかえってきてテーブルに作成する方法で今日現在のもの、指定日をした年齢と2とうりの方法です