
こんにちわ。
いまSQLServer2005でストアドを作成しています。
あるテーブルをSELECTして,あるカラムと件数の両方を出力パラメータに取得したいのですが,
件数は取得できるのですが,カラムが取得できません。
ちなみに下記のようなコードになります。
create procedure funLoginCheck (@UserID char(5), @PassWord varchar(10), @RowCount int output, @DeptID char(2) output)
as select * from MST_Employee
where EmployeeID = @UserID And PassWord = @PassWord; set @deptid = deptid」
deptidを出力パラメータに渡す方法がわかりません。
初歩的なことかもしれませんが,
教えてください。よろしくお願いします。
No.2ベストアンサー
- 回答日時:
>deptidを出力パラメータに渡す方法
select @deptid=deptid from MST_Employee
where EmployeeID = @UserID And PassWord = @PassWord
という方法で渡せます。
ところで、この条件でヒットするのは1行だけなのでは?
パラメタ=@RowCountの目的が、よく分かりませんが?
それに今の記述では、@RowCountには何も設定されていません。システムから返される@@ROWCOUNTの内容を、設定したいのでしょうか?
プロシジャとファンクションの定義と実行例を、参考までに示します。
1.プロシジャ
(1)定義
create procedure dbo.funLoginCheck
(@UserID char(5),
@PassWord varchar(10),
@RowCount int output,
@DeptID char(2) output)
as
select @DeptID=deptid
from MST_Employee
where EmployeeID=@UserID
And PassWord=@PassWord
set @RowCount=@@ROWCOUNT
(2)実行
declare @dept char(2)
declare @rowcnt int
exec dbo.funLoginCheck @UserID='U1',@PassWord='P1',
@RowCount=@rowcnt output,@DeptID=@dept output
select @rowcnt,@dept
2.ファンクション
(1)定義
create function dbo.funLoginCheck
(@UserID char(5),
@PassWord varchar(10))
returns char(2)
begin
declare @DeptID char(2)
select @DeptID=deptid
from MST_Employee
where EmployeeID=@UserID
And PassWord=@PassWord
return @DeptID
end
(2)実行
select dbo.funLoginCheck('U2','P2')
chukenkenkouさん
大変わかりやく教えて頂きまして,ありがとうございます。
教えて頂いた方法でoutパラメータを取得できました。
@RowCountはおっしゃる通り,@@RowCountをセットしまして,
1件しかヒットしないです。
なおサンプル例も付けて頂き,大変参考になりました。

No.1
- 回答日時:
私の知る限り、ストアドプロシージャは戻り値を持ちません。
したがって、ストアドプロシージャが終了してしまうと結果はきえてしまいます。(件数はシステム変数から獲得した、と推測しているので。間違っていたら、ご指摘ください。)
ストアドファンクションならreturnで値を返せるので、こちらを使ってはいかがでしょう?
# ストアドファンクションはテーブルの構成に影響を与えるSQL文は実行できない、という制約があったと記憶していますが、今回はSELECTなので問題はないでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- PostgreSQL 列が存在しないと言われる 2 2023/02/10 18:33
- PHP PHP MySql ページング 2 2022/09/20 06:38
- その他(プログラミング・Web制作) pythonでDBのカラム名で取得したオブジェクトの値を表示したい 1 2022/05/13 03:41
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- Oracle SQL update方法 2 2022/06/22 14:07
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DATEADD 関数の引数の省略形の...
-
顧客データベースを作る場合、...
-
差し込み後、元データを変更し...
-
python コードについて(初学者...
-
イェイイェイイェイ イェイイェ...
-
for whichの使い方
-
英文読解
-
Word2007でアドインタブが表示...
-
誰か教えてください
-
フィルターかけた後、重複を除...
-
エクセルのxans.について
-
insertを高速化させたい
-
工事写真の電子納品
-
マイクラPC版のコマンドで効率...
-
VIEWの元のテーブルのindexって...
-
DEFAULT が設定できないのです
-
select文の書き方「半角カナ+...
-
Outlook 送受信エラー
-
AS400にてサブファイルレコード...
-
複数の重複するIDの最新のレコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL 複数のテーブルから重複な...
-
select *, `人口(男)`AND`人口(...
-
MAX値を条件にしたSQLで困って...
-
アクセス SQLで重複排除でcount...
-
漢字表示の電話機
-
SQLServerのストアドで戻り値取...
-
SQLのエディッションの確認方法...
-
2つのselect文をunion all で...
-
PCキーボード
-
Oracle:グループごとに最大日...
-
同一テーブル内のデータを比較...
-
Access2000でディレクトリリス...
-
DATEADD 関数の引数の省略形の...
-
SQLで小数点のついたべき乗を計...
-
order by区の記述位置
-
「ドロップダウンメニューフィ...
-
月間集計ですべての日付を抽出...
-
set lineで不要な改行が出力さ...
-
1つのカラムに複数レコードの...
-
SQL文 テーブル1つに複数のデータ
おすすめ情報