T-SQL的作用是什么&书信电报;表名>;在这种情况下是不可访问的”;什么意思?(SQL代码:1001042)

T-SQL的作用是什么&书信电报;表名>;在这种情况下是不可访问的”;什么意思?(SQL代码:1001042),sql,tsql,sap-iq,Sql,Tsql,Sap Iq,使用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网站能否发布存储过程的定义?下面的测试对我来说是

使用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网站

能否发布存储过程的定义?下面的测试对我来说是成功的,尽管我在任何地方使用了Sybase SQL(我尝试了版本12.0.1和11.0.1)。Sybase IQ服务器基于SQL Anywhere执行引擎,因此这应该是一个等效的测试,尽管我不确定SQL Anywhere的哪个版本对应于IQ 12.5

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工作。

问题是由我的目标表具有检查约束引起的

下面是一个重新创建问题的示例:

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'));

谢谢,这让我更进一步,我解决了这个问题(见我的答案)。