T-SQL wat betekent "<tabelnaam> is niet toegankelijk in deze context"? (SQL-code: 1001042)

Met behulp van Sybase IQ 12.5,

Wanneer ik probeer het resultaat van een opgeslagen proc in een tabel als deze in te voegen:

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

Ik krijg het volgende:

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

The Sybase website has no further explanation

3

2 antwoord

Kunt u de definitie van uw opgeslagen procedure publiceren? De onderstaande test was succesvol voor mij, hoewel ik Sybase SQL Anywhere gebruikte (ik heb de versies 12.0.1 en 11.0.1 geprobeerd). De Sybase IQ-server is gebaseerd op de SQL Anywhere-uitvoeringsengine, dus dit zou een gelijkwaardige test moeten zijn, hoewel ik niet zeker weet welke versie van SQL Anywhere overeenkomt met 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'));

Volledige openbaarmaking: ik werk voor Sybase in SQL Anywhere-engineering.

1
toegevoegd
Bedankt, dit zette me aan het sleutelen en ik werkte het probleem uit (zie mijn antwoord).
toegevoegd de auteur Rob, de bron

Probleem werd veroorzaakt doordat mijn doeltabel een controlevoorwaarde had.

Hier is een voorbeeld om het probleem opnieuw te maken:

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