MonetDBで実行するクエリ文字列を宣言しようとしています。これが可能であれば、ドキュメントは明確ではありませんが、他のエンジンではこの機能が許可されています(MySQLやMS SQL Severなど)。MonetDBでクエリ文字列を実行する方法
:以下execute 'select * from tables';
をしようとすると、この背後にある理由は、私は次のようにクエリを実行できるように、変数のスキーマ名を宣言する必要があるということですメッセージ
Error: syntax error, unexpected STRING, expecting IDENT or sqlINT
で失敗します
declare s varchar(32);
set s = 'the_schema';
execute 'select * from ' || the_schema || '.the_table';
MonetDBでもこれが可能なのか、それについてのヒントがあれば教えてください。 MonetDBのマニュアルに与えられたように私は、準備されたステートメントを使用してみました - しかし、prepare
は実際のクエリではなく、文字列を想定しているため、次のコードは、
prepare 'select * from ' || the_schema || '.the_table';
を実行することはできません。
編集
私はSQLストアド関数でこれを実現したいと思います。私が持っているクライアントは、SQL関数を直接実行しなければならず、MonetDBサーバーに送信される前に、その場でSQLを構築するための中間Java/PHP/etcスクリプトはありません。したがって、私はそのような関数を作成する必要があります:
私の関数は他のテーブルや関数でも、これより複雑です。問題は関数が1つのスキーマに属し、データテーブルが別のスキーマに属していることです。これは 'コンパイル'時には分かりません。
私はクライアント側でそのクエリ文字列を作成できます - それを実行するステートメントは何ですか? 'execute query_string'?これは、あるスキーマのデータを操作するSQL関数と、実行時に名前がわからない別のスキーマ(つまり、インストールとユーザー名によって異なります)の実際のデータを操作するための機能です。 – YoungMin
私は恐らく、クエリ文字列を実行することはできません、クエリだけです。 –