クエリ結果を返すように PL/pgSQL 関数を変更します
背景
最初に、整形式の PostgreSQL SELECT クエリ文字列を出力する関数を作成します。ここで、生成された SELECT ステートメントをデータベースに対して直接実行し、その結果を取得したいとします。
メソッド: 動的 SQL と戻り値の型
動的 SQL
動的 SQL を実行するには、EXECUTE コマンドを使用します。カーソルを使用していないため、RETURN QUERY EXECUTE 構文を使用できます。
戻り値の型
関数は戻り値の型を宣言する必要があるため、未定義の型のレコードを返すことが課題です。データの特性に応じてさまざまなアプローチを検討します。
固定戻り型を使用した簡単な解決策
タイムスタンプ、テキスト、テキスト列の戻り値の型が固定であると仮定すると、関数を次のように定義できます。
CREATE FUNCTION data_of(_id integer) RETURNS TABLE (datahora timestamp, col2 text, col3 text) AS $$ DECLARE _sensors text := 'col1, col2, col3'; _type text := 'foo'; BEGIN RETURN QUERY EXECUTE format( 'SELECT datahora, %s FROM %s WHERE id = ORDER BY datahora', _sensors, _type ) USING _id; END $$ LANGUAGE plpgsql;
同じ型の列の可変数
可変数の列があり、すべての列が同じ型 (例: double) である場合、ARRAY 型を使用して値をネストできます。
CREATE FUNCTION data_of(_id integer) RETURNS TABLE (datahora timestamp, names text[], values float8[]) AS $$ DECLARE _sensors text := 'col1, col2, col3'; _type text := 'foo'; BEGIN RETURN QUERY EXECUTE format( 'SELECT datahora , string_to_array(, ',') -- AS names , ARRAY[%s] -- AS values FROM %s WHERE id = ORDER BY datahora', _sensors, _type ) USING _sensors, _id; END $$ LANGUAGE plpgsql;
さまざまな完全なテーブル タイプ
テーブルのすべての列を返すには、多態性型を使用できます。
CREATE FUNCTION data_of(_tbl_type anyelement, _id int) RETURNS SETOF anyelement AS $$ BEGIN RETURN QUERY EXECUTE format( 'SELECT * FROM %I -- pg_typeof returns regtype, quoted automatically WHERE id = ORDER BY datahora', pg_typeof(_tbl_type) ) USING _id; END $$ LANGUAGE plpgsql;
注: 2 番目の例では、string_to_array
関数には区切り文字が必要で、ここでは ,
が区切り文字として追加されています。 3 番目の例では、%I
フォーマット識別子を使用してテーブル名をより安全な方法で処理し、SQL インジェクションを防ぎます。 どの方法を選択するかは、特定のニーズとデータ構造によって異なります。 可能であれば、テーブル構造と目的の結果に関する詳細情報を提供していただくと、より正確で効率的なソリューションを提供できる可能性があります。
以上がPL/pgSQL 関数を変更して動的 SQL クエリの結果を返すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

blobdatatypesinmysqlareusedlarginglaredatalikeimagesorudio.1)useblobtypes(tinyblobtolongblob)Basedatasizeneeds。 2)storeblobsin perplate petooptimize performance.3)scondididididididididersxternalストレージBlob Romanaデータベースindimprovebackupe

toadduserstomysqlfromthecommandline、loginasroot、thenusecreateuser'username '@' host'ident'ident'identifidedby'password '; tocreateanewuser.grantpermissions with grantpermissions with grantalgegesondatabase

mysqlofferseightStringDatatypes:char、varchar、binary、varbinary、blob、text、enum、andset.1)charisfixed-length、yealforconsistent datalikecountrycodes.2)varcharisvariable length、efficational forvaryingdatalikenames.3)binaryandvanterbinarydata a similati

toaddauserinmysql、usethecreateuserstatement.1)usecreateuser'newuser '@' localhost'ident'identifidedby'password '; tocreateauser.2)exestrongPolicieswithieswithieSwithvalidate_passwordworuginsettings

ストアドプロシージャは、パフォーマンスを向上させ、複雑な操作を簡素化するためのMySQLのSQLステートメントを事前に拡大します。 1。パフォーマンスの改善:最初のコンピレーションの後、後続の呼び出しを再コンパイルする必要はありません。 2。セキュリティの改善:許可制御を通じてデータテーブルアクセスを制限します。 3.複雑な操作の簡素化:複数のSQLステートメントを組み合わせて、アプリケーションレイヤーロジックを簡素化します。

MySQLクエリキャッシュの実用的な原則は、選択クエリの結果を保存することであり、同じクエリが再度実行されると、キャッシュされた結果が直接返されます。 1)クエリキャッシュはデータベースの読み取りパフォーマンスを改善し、ハッシュ値を使用してキャッシュされた結果を見つけます。 2)単純な構成、mysql構成ファイルでquery_cache_typeとquery_cache_sizeを設定します。 3)SQL_NO_CACHEキーワードを使用して、特定のクエリのキャッシュを無効にします。 4)高周波更新環境では、クエリキャッシュがパフォーマンスボトルネックを引き起こし、パラメーターの監視と調整を通じて使用するために最適化する必要がある場合があります。

MySQLがさまざまなプロジェクトで広く使用されている理由には、次のものがあります。1。複数のストレージエンジンをサポートする高性能とスケーラビリティ。 2。使いやすく、メンテナンス、シンプルな構成とリッチツール。 3。豊富なエコシステム、多数のコミュニティとサードパーティのツールサポートを魅了します。 4。複数のオペレーティングシステムに適したクロスプラットフォームサポート。

MySQLデータベースをアップグレードする手順には次のものがあります。1。データベースをバックアップします。2。現在のMySQLサービスを停止します。3。MySQLの新しいバージョンをインストールします。アップグレードプロセス中に互換性の問題が必要であり、Perconatoolkitなどの高度なツールをテストと最適化に使用できます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

WebStorm Mac版
便利なJavaScript開発ツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター
