7

多数の結果を返すストアド プロシージャがあり、Excel などにコピー/貼り付けするよりも結果をデバッグ/解析するためのより良い方法が必要です。プロシージャの結果をクエリに渡す方法はありますか? たとえば、プロシージャ コールが次のような場合:

exec database..proc 'arg1','arg2','arg3'

私の考えは次のようなことをすることでした:

select distinct column1 from 
(exec database..proc 'arg1','arg2','arg3')

明らかにうまくいかなかったか、私はここにいなかったでしょう。問題があるとすれば、これは sybase データベース用です。

ありがとう!

4

7 に答える 7

3

SQL Anywhere 10 および 11 の場合 (質問しているのが ASA なのか ASE なのかわかりませんでした):

SELECT DISTINCT Column1
FROM procName(parameter1, parameter2, parameter3);

私は ASE を持っていません。これが以前の ASA バージョンで機能するかどうかはわかりません。

于 2009-03-04T23:29:14.937 に答える
0

現在Sybaseをインストールしていないので、ここで構文上のマイナーな側面が間違っている可能性があります-確認できませんが、過去に広範囲に使用しました:select * into #temp from proc_name('arg1'、'arg2' 、'arg3')は、適切な列を使用してローカル一時テーブルを自動的に作成する必要があります。同じトランザクションまたは開始/終了ブロック内で、# tempから*を選択して#tempにアクセスできます。

于 2009-04-22T09:09:17.713 に答える
0

私はSybaseに精通していませんが、MySQLでは、このINパラメーターを使用して、これらすべてに対して1つのSQLクエリを作成できます。元:

select distinct column1 from table where column1 in (your_first_query_with_all_the_arguments)

于 2009-02-28T15:25:52.137 に答える
0

この問題を実際に回避する唯一の方法は、データベースにテーブルを作成して一時的な値を保存することです。

ストアド プロシージャが Column1、Column2、および Column3 を選択するとします。

Column1、Column2、Column3 を含むテーブル (tempTable) を作成し、ストアド プロシージャを次のように設定します。

CREATE PROCEDURE database..proc
AS
BEGIN
  DELETE FROM tempTable

  INSERT INTO tempTable (Column1, Column2, Column3)
  SELECT Column1, Column2, Column3 
  FROM Table1 
END

then for your sql code to select the values have:

exec database..proc
SELECT Column1, Column2, Column3 
FROM tempTable

これが役立つことを願っています。以前に同様の問題に遭遇したことがあり、これが解決できる最善の方法でした。

于 2009-03-02T17:46:28.927 に答える