urizakaと申します。
 さて、最近までSQLというのはselectやINSERTなどを使ってデータ
ベースをいじるものだという認識しかなかったのですが、実は「IF」や「ELSE」
も組み込むことができると聞いて、さっそくプログラミングを組んでみました

declare @i int
declare @result int
set @i = 0
while @i < 10
begin
set @i = @i + 1
select @result=count(code_staff_client) from t_issue where code_staff_client=@i
if @result != 0
BREAK
end

 これは、t_issue というテーブルを検索して、コード番号10までの
人間がいるかどうかを調べるためのSQL文なのですが、さて、この時に
条件に適合したら返り値として値1を返して処理を終わるというSQL文
にしたいのですが、この場合返り値についてどのように宣言すれば
良いのでしょうか?
 このあとからわからなくなってしまったもので・・・すみませんが、ご存知
の方宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

if @result != 0


BERAK
end
の辺りを

if @result != 0
RETURN(1)
end
RETURN(0)

とかにしてみたらどうでしょう?
はずしてたらスイマセン。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

QSQLiteで「UPDATE table1 SET cnt+=1」のようなことがしたいのですがどう書けばいいですか?

adobe AirにてSQLiteを使っています。

ある値を加算してやりたいのですがmySQLと同じ書き方ではできませんでした。下の2つの書き方はいずれもだめでした。
UPDATE table1 SET cnt+=1
UPDATE table1 SET cnt=cnt+1

どのように書けばいいのでしょうか?
よろしくおねがいします。

Aベストアンサー

SQLの基本的な構文であり、MySQLとは違うといったことはありません。

update 表名 set 列名=列名+1

>mySQLと同じ書き方ではできませんでした。下の2つの書き方はいずれもだめでした。

「だめ」とは、具体的にどうなるのですか?
文法エラー?
更新しているはずなのに、値が変わっていない?

QAccess_VBA_記述方法

AccessVBAの記述方法で悩んでいます。
複数のテーブルを順読みして、レコードの更新/追加/削除のプログラムを作成していますが、順読みなので何も入っていないテーブルのレコードも読みに行ってしまいデバックとして出てしまいます。
EOFやNULLをどうにかして判断条件として記述してみましたが、やはり上手くいきませんでした。
レコードでの判断条件では無く、テーブル内にレコードが存在するかどうかという判断文と条件文の記述方法がありましたら、どうか教えて下さい。
宜しくお願い致します。

Aベストアンサー

○案1
Dim cnt
cnt = Dcount("*", "[テーブル名]")
If cnt > 0 Then
' レコードがあるテーブルになにかする
End If

とDcount関数を使えばどうでしょうか。

○案2
また複数のテーブルが同じフィールドを含むならば
ユニオンクエリで1つのテーブルにしてから扱うことも
簡単だと思います。

Q「CODE39」バーコードの誤読率

「CODE39」のバーコードの誤読率がおおよそどのくらいであるのか、参考になるデータを探しています。
「CODE39」は誤読率が低いことまでしか各所のサイトではわかりませんでしたが、実際にどれほどであるのか疑問になっています。
宜しくお願いします。

Aベストアンサー

ミス(誤読)の発生率
 キーパンチャーのキー入力 3/1000
 1次元バーコード 1/3百万 (CODE39を含む)
 2次元バーコード 3千万回やってゼロ

上のように聞いたことがあります。

QUPDATE時のSETの実行順について

MySQLで
  UPDATE data SET item1=item2, item2=0;
と書いた場合、item1にはそれまでのitem2の値が入り、item2は0になりました。

また、
  UPDATE data SET item2=0, item1=item2;
と書いた場合、item1、item2ともに0になりました。

これは「SETの内容は、書いた順に実行されることが保証されている」と考えてよいのでしょうか?
それとも実装依存なのでしょうか?

Aベストアンサー

マニュアルに

mysql> UPDATE persondata SET age=age*2, age=age+1;
UPDATE は左から右へ評価されます。

とありますので、書いた順に実行されるということだと思います。
http://dev.mysql.com/doc/mysql/ja/UPDATE.html#IDX1545

参考URL:http://dev.mysql.com/doc/mysql/ja/UPDATE.html#IDX1545

Qint関数の切り上げ

int関数の切捨てがうまくいません。
類似の質問を検索して、試行錯誤しましたが、煮詰まってしまいました。
具体的には以下の内容です。

Dim wrkA As Currency
Dim wrkB As Currency

wrkA = 4935000
wrkB = Int(wrkA * 0.6)

wrkBに欲しい値は2961000、実際は2960999となってしまいます。

よろしくお願いいたします。

Aベストアンサー

使用されている言語とバージョンは明記しましょう~。
文法よりVisualBasicと判断します。

当方環境:VisualBasic6.0 SP4

まず、下記のロジックを貼り付けて実行してみてください。

Private Sub Command1_Click()
Dim wrkA As Currency
Dim wrkB As Currency

wrkA = 4935000
MsgBox "TypeName = " & TypeName(Int(wrkA * 0.6))
End Sub

TypeName = Doubleと、でますよね?
これは0.6がDouble型で、これにあわせるために
暗黙の方変換が行われているからです。

0.6を通貨型で定義することにより、
暗黙の方変換を抑制することが出来ます。

Private Sub Command1_Click()
Dim wrkA As Currency
Dim wrkB As Currency

wrkA = 4935000
MsgBox "TypeName = " & TypeName(Int(wrkA * CCur(0.6)))
End Sub

ご参考になれば幸いです。

使用されている言語とバージョンは明記しましょう~。
文法よりVisualBasicと判断します。

当方環境:VisualBasic6.0 SP4

まず、下記のロジックを貼り付けて実行してみてください。

Private Sub Command1_Click()
Dim wrkA As Currency
Dim wrkB As Currency

wrkA = 4935000
MsgBox "TypeName = " & TypeName(Int(wrkA * 0.6))
End Sub

TypeName = Doubleと、でますよね?
これは0.6がDouble型で、これにあわせるために
暗黙の方変換が行われているからです。

0.6を...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報