■SI Object Browser 掲示板
|
ユーザの皆様、開発者、サポート担当者の交流のための掲示板です! ユーザーの皆様同士で教え合ったりもできる交流の場にしたいと思っていますので、相互協力をよろしくお願いします。 なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。 |
|
| ※各投稿のカラーは対象となる製品に対応しています。【■…OB ■…OBER ■…全般 ■…その他】 ※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。 ※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。 ※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。 | |
SQL実行で一時テーブルの作成、抽出
2025/08/01 10:51
OB
2
j
SI Object Browser for SQL Server 22(x64)
SELECT 'TEST' AS TEST
INTO #TEST
SELECT *
FROM #TEST
→結果「SQLを実行しました。(対象:1レコード)」
SQL実行機能で、一時テーブルを作成してそのままデータを抽出したいと考えています。
上記のSQLで実行した結果、データが抽出されず、ポップアップに上記の結果が表示されて終了してしまいます。
SQL実行内で、複数の処理が区切られてしまい一連の処理として実行されていないため、
作成された一時テーブルがすぐに削除されてしまい、結果として2つ目のSELECTが実行できていないと思っています。
設定などで一連の処理として実行する方法はないでしょうか?
※他のツールの都合で一時テーブルを使うしかない状況です。
※他のツールでは実行でき、データの抽出が確認できました。
SELECT 'TEST' AS TEST
INTO #TEST
SELECT *
FROM #TEST
→結果「SQLを実行しました。(対象:1レコード)」
SQL実行機能で、一時テーブルを作成してそのままデータを抽出したいと考えています。
上記のSQLで実行した結果、データが抽出されず、ポップアップに上記の結果が表示されて終了してしまいます。
SQL実行内で、複数の処理が区切られてしまい一連の処理として実行されていないため、
作成された一時テーブルがすぐに削除されてしまい、結果として2つ目のSELECTが実行できていないと思っています。
設定などで一連の処理として実行する方法はないでしょうか?
※他のツールの都合で一時テーブルを使うしかない状況です。
※他のツールでは実行でき、データの抽出が確認できました。
返信を投稿
OB
OBサポート
OBサポートです。
いただいたSQLにつきましては
「SELECT 'TEST' AS TEST INTO #TEST」と「SELECT * #TEST」の2つのSQLが
改行で区切られたSQLとなっておりますが
現状、Object Browser上では複数SQLの実行時は区切り文字が必要となるため
正常に実行できないかたちとなっております。
(区切り文字がない場合、1つの目のSELET INTO分のみ実行される動作となります。)
つきましては2つのSQLを「go」挟むことでそれぞれのSQLを実行可能ですが、
内部では別プロセスで実行される関係で、いただいたSQLではエラーとなってしまいます。
(1つ目のSQLでローカル一時テーブルの作成はできますが、
2つ目のSQLが別プロセスとなる関係で、ローカル一時テーブルの参照ができず、
エラーが発生してしまいます。)
設定などで本動作を変更する方法もございませんが、
現状は「go」で挟むかつ、「#TEST」の部分を「##TEST」に変更の上
グローバル一時テーブルにしていただくことで実行可能となっております。
SELECT 'TEST' AS TEST
INTO ##TEST
go
SELECT *
FROM ##TEST
つきましては本方法で代用できますか、ご確認いただいてもよろしいでしょうか。
お手数をおかけいたしますが、よろしくお願いいたします。
いただいたSQLにつきましては
「SELECT 'TEST' AS TEST INTO #TEST」と「SELECT * #TEST」の2つのSQLが
改行で区切られたSQLとなっておりますが
現状、Object Browser上では複数SQLの実行時は区切り文字が必要となるため
正常に実行できないかたちとなっております。
(区切り文字がない場合、1つの目のSELET INTO分のみ実行される動作となります。)
つきましては2つのSQLを「go」挟むことでそれぞれのSQLを実行可能ですが、
内部では別プロセスで実行される関係で、いただいたSQLではエラーとなってしまいます。
(1つ目のSQLでローカル一時テーブルの作成はできますが、
2つ目のSQLが別プロセスとなる関係で、ローカル一時テーブルの参照ができず、
エラーが発生してしまいます。)
設定などで本動作を変更する方法もございませんが、
現状は「go」で挟むかつ、「#TEST」の部分を「##TEST」に変更の上
グローバル一時テーブルにしていただくことで実行可能となっております。
SELECT 'TEST' AS TEST
INTO ##TEST
go
SELECT *
FROM ##TEST
つきましては本方法で代用できますか、ご確認いただいてもよろしいでしょうか。
お手数をおかけいたしますが、よろしくお願いいたします。
返信を投稿
OB
j
OBサポート様
ご回答いただきありがとうございます。
仕様でローカル一時テーブルは使用できないとのこと承知致しました。
グローバル一時テーブルで代用できないか検討してみます。
どうぞよろしくお願い致します。
ご回答いただきありがとうございます。
仕様でローカル一時テーブルは使用できないとのこと承知致しました。
グローバル一時テーブルで代用できないか検討してみます。
どうぞよろしくお願い致します。
返信を投稿
OB