質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

2回答

1609閲覧

PL/pgSQLでreturnは使えないのでしょうか

chintao1224

総合スコア156

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2021/06/04 05:44

前提・実現したいこと

postgresql 9.6を使っています。
大量のinsert文を実行するPL/pgSQLを作りたいです。
C#でPL/pgSQLを呼び出すつもり(ソースは書いていません)で、PL/pgSQLの戻り値0または1を取得しc#側でcommitまたはrollbackするつもりです。

大量のinsert文のところを1文だけ書いてみてPL/pgSQLを書いてみたのですが実行してエラーが出ました。

発生している問題・エラーメッセージ

syntax error at or near "RETURN"

該当のソースコード

PL/pgSQL

1CREATE OR REPLACE FUNCTION 2test() 3RETURNS int AS $$ 4 BEGIN 5 BEGIN 6 insert into tbl1 select '001','002'; 7 RETURN 0; 8 EXCEPTION 9 RETURN 1; 10 END; 11 END; 12$$ LANGUAGE plpgsql;

補足情報(FW/ツールのバージョンなど)

PL/pgSQLでcommitとrollbackが使えないと聞いたので、C#でPL/pgSQLを呼び出しC#側でPL/pgSQLの戻り値0または1をみてcommitまたはrollbackをしようと考えています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Orlofsky

2021/06/04 08:17

>PL/pgSQL 入門 でググって先頭10件を熟読し、サンプルコードがあれば実行。 くらいはやっては?
guest

回答2

0

EXCEPTIONの記述が誤っています。
EXCEPTIONの後には、ハンドリングする事象を記述しなければなりません。
41.6.6. エラーの捕捉

SQL

1CREATE OR REPLACE FUNCTION test() 2RETURNS int AS $$ 3BEGIN 4 insert into tbl1 select '001','002'; 5 RETURN 0; 6EXCEPTION 7 WHEN OTHERS THEN 8 RETURN 1; 9END; 10$$ LANGUAGE plpgsql;

投稿2021/06/04 06:18

編集2021/06/04 08:47
sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

v9.6向けにリンク先を変えて回答直します。

41.6.1.1. RETURN

RETURN expression;

でFUNCTIONなら値を返せる模様。

投稿2021/06/04 05:50

編集2021/06/04 08:59
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2021/06/04 06:18

質問はFUNCTIONですよ。
退会済みユーザー

退会済みユーザー

2021/06/04 06:27

大変失礼しました。
sazi

2021/06/04 08:55 編集

よく見るとリンク先は12.4ですね。質問はVer.9.6です。 また、PROCEDUREはVer11から提供された機能です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問