- PR -

ストアドプロシージャを教えて下さい。

1
投稿者投稿内容
未熟者
常連さん
会議室デビュー日: 2006/03/27
投稿数: 36
投稿日時: 2006-05-31 15:26
いつもお世話になっています未熟者といいます。
現在SQL Server2005にてレコード追加するストアドプロシージャを
作っています。
内容は authorityテーブル(auhorityid,authorityname)を1レコードづつ読込み
    パラメータ(empid)で受け取った値を付加して、
    tmpempauthoテーブル(empid,authorityid,authorityname,flg)に追加
    する仕様なのですが、その際にempid + authorityidをキーに
    empauthorityテーブル(empid,authorityid)を検索して存在すれば
    tmpempauthoテーブルのflgにtrueをセット無ければfalseをセット
    します。
上記の仕様でempauthorityテーブルを検索する記述が恥ずかしながらわかりません。
以下がコーディング途中内容です。
ご教授方宜しくお願いします。

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROCEDURE [dbo].[kengenlist] as
begin
declare @EmpID int
declare @AuthorityID int
declare @AuthorityName char
-- カーソル定義
declare Authority cursor for select * from MAuthority
declare EmpAuthority cursor for select * from MEmployeeAuthority
where EmployeeID = @EmpID
declare tmpempautho cursor for select * from tmpempautho

-- カーソルオープン
open Authority
-- 1件目読込
fetch Authority into @AuthorityID,@AuthorityName
-- データ取得
while (@@fetch_status=0)
begin
-- authorityテーブルがeofになるまで繰り返す。
fetch next from Authority into @AuthorityID,@AuthorityName
検索処理?

-- tmpempauthoテーブルに出力
  出力処理
end
-- 終了処理
close Authority
close empauthority
close tmpempautho
end
 
    
未記入
常連さん
会議室デビュー日: 2006/04/11
投稿数: 23
投稿日時: 2006-05-31 16:56
こういうソース丸投げに近い質問は、たぶんみなさん敬遠して回答しないですよ。
(私も回答する気にはなれないですし)

もう少し、質問の手法を変えてみては如何でしょうか。
(ソース丸投げにならないよう、出来るだけ的を絞るとか)
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-05-31 17:27
引用:

上記の仕様でempauthorityテーブルを検索する記述が恥ずかしながらわかりません


その前にインターネットでの検索の仕方がわからんのだよな。
未熟者
常連さん
会議室デビュー日: 2006/03/27
投稿数: 36
投稿日時: 2006-05-31 17:55
自分勝手に質問をいたしまして申し訳ありませんでした。
現在、悩んでいますのは元となるテーブル(authority)を1件毎に読み込み
読み込んだデータを元に別のテーブル(empauthority)を検索する時のコーディング
なのですが,検索対象となるテーブルに対してのselect文にて存在チェックする
ことは可能でしょうか?
上手く説明が出来ないのですが、自分なりに考えたコーディングを以下に記述しました
宜しくご教授の方お願いします。

-- パラメータ定義
declare @EmpID int
-- カーソルオープン
open Authority
open empauthority
-- 1件目読込
fetch Authority into @AuthorityID,@AuthorityName
while (@@fetch_status=0)
begin
-- authorityテーブルがeofになるまで繰り返す。
fetch next from Authority into @AuthorityID,@AuthorityName
if ((select count(*) from empauthority where empid = @empid and
authorityid = @authorityid) > 0
処理A
lese
処理B
end if
Yam
大ベテラン
会議室デビュー日: 2003/09/13
投稿数: 179
お住まい・勤務地: だんじり祭りの地
投稿日時: 2006-05-31 18:44
細かいことを抜きにすれば、そのコードで間違っていないと思います。

が、authority表をフェッチする際にempauthority表を外部結合すればいいんジャマイカ?
未熟者
常連さん
会議室デビュー日: 2006/03/27
投稿数: 36
投稿日時: 2006-06-01 09:33
Yamさん、皆さんありがとうございます。
頑張ってやってみます。
お騒がせしましてすいませんでした
1

スキルアップ/キャリアアップ(JOB@IT)