15

sybaseASE15に取り組んでいます。このようなものを探しています

Select * into #tmp exec my_stp;

my_stpは、各行に2つの列がある10個のデータ行を返します。

4

4 に答える 4

6

ASE 15では、関数を使用できると思いますが、複数行のデータセットには役立ちません。

ストアドプロシージャが「どこかからcol1、col2を選択」してデータを返している場合、そのデータを取得する方法はなく、クライアントにフローバックするだけです。

できることは、データを一時テーブルに直接挿入することです。これは、sproc内に一時テーブルを作成する場合と同じように少し注意が必要です。これは、sprocの実行が終了し、内容が表示されなくなると削除されます。このための秘訣は、sprocの外部に一時テーブルを作成することですが、sprocからそれを参照することです。ここで難しいのは、sprocを再作成するたびに、一時テーブルを作成する必要があるということです。そうしないと、「テーブルが見つかりません」というエラーが発生します。


    --You must use this whole script to recreate the sproc    
    create table #mine
    (col1 varchar(3),
    col2 varchar(3))
    go
    create procedure my_stp
    as
    insert into #mine values("aaa","aaa")
    insert into #mine values("bbb","bbb")
    insert into #mine values("ccc","ccc")
    insert into #mine values("ccc","ccc")
    go
    drop table #mine
    go

コードを実行するには:


create table #mine
(col1 varchar(3),
col2 varchar(3))
go

exec my_stp
go

select * from #mine
drop table #mine
go
于 2008-10-06T19:34:31.217 に答える
-1

Sybaseについてはわかりませんが、SQL Serverでは次のように動作するはずです:

INSERT INTO #tmp (col1、col2、col3...) exec my_stp

于 2008-10-03T10:03:39.227 に答える
-1

my_stp が異なるテーブルから値を計算してデータを入力している場合、my_stp とまったく同じことを行う同等のビューを作成できます。

CREATE VIEW My_view
 AS
/*
  My_stp body
*/


Then select data from view 
SELECT *  INTO #x FROM my_view
于 2014-08-30T07:14:16.233 に答える