COMMIT
やROLLBACK
といったトランザクション制御コマンドをSPI_execute
などのSPI関数を通して実行することはできません。
しかしながら、SPIを通してトランザクション制御ができる別のインタフェース関数があります。
どこで呼び出されるかという文脈を考慮することなく、ユーザ定義された任意のSQL呼び出し可能な関数でトランザクションを開始・終了することは、一般的に安全でも思慮のあることではありません。
例えば、SQLコマンドの一部の複雑なSQL式の一部である関数中のトランザクションブロックは、おそらく不明瞭な内部エラーやクラッシュになります。
ここに示されるインタフェース関数は、CALL
起動の文脈を考慮しており、主としてCALL
コマンドから起動される手続き言語から使われることを意図しています。
SPIを使ったCで実装されたプロシージャは同じロジックを実装できますが、その詳細は本文書の範囲を超えます。