3

Sybase IQ 12.5を使用して、

ストアドプロシージャの結果を次のようなテーブルに挿入しようとすると、次のようになります。

INSERT mytable (column1, column2, column3)
SELECT column1, column2, column3
FROM (myproc('AAA'))

私は次のようになります:

ASA Error -1001042: Table, 'mytable', is not accessible in this context. 

SybaseのWebサイトにはこれ以上の説明はありません

4

2 に答える 2

1

ストアド プロシージャの定義を投稿できますか? 以下のテストは成功しましたが、Sybase SQL Anywhere を使用しました (バージョン 12.0.1 と 11.0.1 を試しました)。Sybase IQ サーバーは SQL Anywhere 実行エンジンに基づいているため、これは同等のテストになるはずですが、IQ 12.5 に対応する SQL Anywhere のバージョンはわかりません。

create table mytable (column1 int, column2 int, column3 int);
create procedure myproc( parm varchar(10))
  result ( column1 int, column2 int, column3 int)
  begin
     select 1,2,3;
  end;
INSERT mytable (column1, column2, column3)
  SELECT column1, column2, column3
  FROM (myproc('AAA'));

完全な開示: 私は SQL Anywhere エンジニアリングの Sybase で働いています。

于 2011-12-07T02:50:09.233 に答える
1

問題は、ターゲット テーブルにチェック制約があるために発生しました。

問題を再現する例を次に示します。

create table mytable (column1 int, 
    column2 int, 
    column3 int CHECK (column3 in (1,2,3)));

create procedure myproc( parm varchar(10))
  result ( column1 int, column2 int, column3 int)
  begin
     select 1,2,3;
 end;
INSERT mytable (column1, column2, column3)
  SELECT column1, column2, column3
  FROM (myproc('AAA'));
于 2011-12-07T04:23:41.283 に答える