aix version5 + db2 version9.5.5
の環境でUDFを作成しようとDDLを実行したところ、
以下のエラーがでて作成できませんでした。
db2 9.7 では同じDDLで作成できました。
どうやらcursorの定義に問題がありそうなのですが、
9.5では以下のcursor定義はできないものなのでしょうか?
よろしくお願いします。
--エラー内容--------------------------
DB21034E コマンドが、有効なコマンド行プロセッサー・コマンドでないため、 SQL
ステートメントとして処理されました。 SQL 処理中に、そのコマンドが返されました。
SQL0104N "GentaniMeisai CURSOR" に続いて予期しないトークン "FOR"
が見つかりました。予期されたトークンに "<SQL_variable_condition_declaration>"
が含まれている可能性があります。 LINE NUMBER=15. SQLSTATE=42601
--DDLの中身(一部)-------------
DECLARE curGentaniMeisai CURSOR FOR
SELECT
aaa
FROM
bbb
WHERE
ccc = [変数]
;
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
ANo.1です。
>"GentaniMeisai CURSOR"
>ここの文はエラー箇所の前20文字が表示されるみたいです。
失礼しました。20文字だけでしたね。(マニュアル確認しとけって言われそうですが。)
他にエラーが出ていてその影響で、FORがダメとメッセージが出ているのでない限りは、
私にはエラーになる理由が思いつかないです。
あと私に思いつくのは、念のため、FORの前に
WITHOUT HOLD
と
WITHOUT RETURN (もしくは他のパラメタ)
をつけてみても同じか確認してみるくらいです。
(マニュアルは、省略OKとなっているようにしか思えませんが。)
構文。最初につけたサイトからの引用。
>>-DECLARE--cursor-name--CURSOR--●--| holdability |--●---------->
>--| returnability |--●--FOR--+-select-statement-+-------------><
'-statement-name---'
holdability
.-WITHOUT HOLD-.
|--+--------------+---------------------------------------------|
'-WITH HOLD----'
returnability
.-WITHOUT RETURN-------------.
|--+----------------------------+-------------------------------|
| .-TO CALLER-. |
'-WITH RETURN--+-----------+-'
'-TO CLIENT-'
この回答への補足
解決しました。
DB2 9.5でなぜUDFではDECLARE FOR で定義できないかは分かりませんが、
FORステートメントを使って解決しました。
BEGIN ATOMIC
DECLARE fullname CHAR(40);
FOR vl AS
SELECT firstnme, midinit, lastname FROM employee
DO
SET fullname = lastname CONCAT ','
CONCAT firstnme CONCAT ' ' CONCAT midinit;
INSERT INTO tnames VALUES (fullname);
END FOR;
END
No.1
- 回答日時:
エラーメッセージに
SQL0104N "GentaniMeisai CURSOR" に続いて予期しないトークン "FOR"
が見つかりました。
とあるので
カーソル名をcurGentaniMeisaiと認識していないようですね。
日本語が混ざっているとか何かおかしなコードが入っているとかしていないですか?
試してみるなら、カーソル名をc1とかにするとうまくいくとか。
9.5のマニュアル(下記URL)見てみたけど文自体は問題なさそう。
http://publib.boulder.ibm.com/infocenter/db2luw/ …
この回答への補足
回答ありがとうございます。
"GentaniMeisai CURSOR"
ここの文はエラー箇所の前20文字が表示されるみたいです。
なので途中で切れているだけで認識されていないということではなさそうです。
ちなみに
DECLARE curGentaniMeisai CURSOR;
としたらこの文自体はエラーとなりませんでした。
何かしらの条件でFORが使えないのでしょうか…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- Excel(エクセル) EXCELの「接続」のSQLのコマンド文字列にて、セルから任意の数値を利用したい 2 2023/03/09 16:43
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- MySQL #1062 - '0' は索引 'PRIMARY' で重複しています。とでています。 1 2023/01/01 06:13
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
列名に変数を使うことはできな...
-
#1062 - '0' は索引 'PRIMARY' ...
-
AccessVBA 実行時エラー'2766'...
-
空白はダメというエラーの表示...
-
SQL文長の制限
-
SQLserver2005 nvarchar を flo...
-
VBAで RecordSet を扱うには?
-
(素人の質問) SQL Server エ...
-
1人社内SEとして
-
SQL エラー コードの一覧 につ...
-
アクセスでのエラーについて
-
オラクル(PL/SQL)のエラー
-
SQL*Loaderで「オブジェクトが...
-
MySQLで「ERROR 1064」が出てし...
-
CREATE TEMPORARY TABLEを複数...
-
実行時エラー459 withステート...
-
SQLで二つテーブルが同じだった...
-
同ベータベース内でのwordpress...
-
アクセスでエラー このフィー...
-
DBCC CHECKDBのエラーについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
#1062 - '0' は索引 'PRIMARY' ...
-
「1004:アプリケーション定義...
-
列名に変数を使うことはできな...
-
アクセスでエラー このフィー...
-
実行時エラー459 withステート...
-
AccessVBA 実行時エラー'2766'...
-
空白はダメというエラーの表示...
-
SQLserver2005 nvarchar を flo...
-
SQL文長の制限
-
オラクル(PL/SQL)のエラー
-
DocuWorksでの印刷
-
SQL エラー コードの一覧 につ...
-
Access2010実行時エラー-21473525
-
BULK INSERTのエラー取得は可能...
-
PL/SQL ORA-06502エラーに関し...
-
UPDATEを使ったSQL文にて
-
DLLが正しく呼び出せません (ToT)
-
『ORA-00936: 式がありません。...
-
(素人の質問) SQL Server エ...
-
Access 実行時エラー'3075' 対...
おすすめ情報