Een opgeslagen procedure gebruiken
Een opgeslagen procedure is een subroutine die beschikbaar is voor toepassingen met toegang tot een relationeel databasesysteem. Wanneer u met Tableau verbinding maakt met een SAP Sybase ASE-, Microsoft SQL Server- of Teradata-database, kunt u een opgeslagen procedure gebruiken om de verbinding te definiëren.
Voor Oracle kunt u een tabelfunctie gebruiken om de verbinding te definiëren. Oracle-tabelfuncties werken op dezelfde manier als opgeslagen procedures en worden vermeld onder Opgeslagen procedures op de pagina Databron.
Wanneer u een databron maakt met een van deze datatypen, worden de beschikbare procedures vermeld onder Opgeslagen procedures, zoals weergegeven in het Microsoft SQL Server-voorbeeld:
Sleep de procedure vanuit het linkerdeelvenster naar het canvas of dubbelklik op een van de vermelde procedures. Als er in de procedure parameters beschikbaar zijn, wordt het dialoogvenster Parameters automatisch weergegeven.
In plaats van een waarde in te voeren kunt u een bestaande Tableau-parameter gebruiken of een nieuwe Tableau-parameter voor de waarde maken:
Als u vervolgens de Tableau-parameter in de weergave weergeeft, kunnen gebruikers de waarde van de parameter in de procedure interactief wijzigen.
Opgeslagen procedures ondersteunen geen federatie, relatie of joining. Ze worden weergegeven in één logische tabel in de logische laag en staan het openen van het Join/Union-canvas (fysieke laag) niet toe.
Opmerkingen over opgeslagen procedures
Als u opgeslagen procedures gebruikt om een databron voor Tableau te definiëren, houd dan rekening met het volgende:
Als een opgeslagen procedure meer dan één resultatenset retourneert, leest Tableau de eerste en negeert de rest.
Als een opgeslagen procedure uitvoerparameters bevat, filtert Tableau de opgeslagen procedure eruit.
Opgeslagen procedures met parameters van een niet-scalair type zijn uitgesloten.
Kolommen met resultatensets die geen overeenkomende typen in Tableau hebben (zoals varbinary, geometry en hierarchyid), worden vastgelegd. Als alle resultatensetkolommen worden toegewezen aan onbekende datatypen, geeft Tableau een bericht weer:
"De resultatenset... bevat geen bruikbare kolommen."
Opgeslagen procedures die geen resultatensets retourneren, worden vermeld op de databronpagina, maar mislukken als ze worden geselecteerd.
Als er geen waarde wordt opgegeven voor een parameter die de opgeslagen procedure vereist, treedt er een fout op. Tableau kan niet vooraf vaststellen of parameters vereist zijn.
Tableau voert geen transactiebeheer uit voor opgeslagen procedures. Dit betekent dat schrijvers van opgeslagen procedures niet afhankelijk moeten zijn van Tableau om transacties te starten voordat opgeslagen procedures worden aangeroepen, of om ze daarna vast te leggen.
Kolomnamen moeten uniek zijn om opgeslagen procedures te laten werken. Als twee kolommen dezelfde naam hebben, of als er geen naam is opgegeven, kan de procedure tot een fout leiden.
Als een opgeslagen procedure meerdere query's bevat (bijvoorbeeld om waarden uit een andere tabel te lezen of tijdelijke combinaties vast te houden), moet elk van de query's dezelfde sets kolommen in dezelfde volgorde retourneren (dezelfde namen en datatypen). Om ervoor te zorgen dat de kolomvolgorde en namen overeenkomen in de queryresultaten, moet u mogelijk expliciet
CAST
om er bijvoorbeeld te garanderen dat het datatype correct isCAST(Username as VARCHAR(20))
, en de kolommen expliciet een naam geven. Als een opgeslagen procedure deze richtlijnen niet volgt, kan dit tot een foutmelding leiden:"Fout InsertData: niet-gebonden kolom"
Als een opgeslagen procedure meerdere query's bevat (bijvoorbeeld om waarden uit een andere tabel te lezen of tijdelijke combinaties vast te houden) en de procedure een fout genereert, probeer dan
SET NOCOUNT ON
boven aan de procedure toe te voegen. Hierdoor wordt voorkomen dat het bericht met het aantal rijen dat wordt beïnvloed door een Transact-SQL-instructie, wordt geretourneerd als onderdeel van de resultatenset voor een query.
Daarnaast gelden voor specifieke databases de volgende beperkingen.
Beperkingen van opgeslagen procedures voor Teradata Databases
De volgende beperkingen zijn van toepassing op opgeslagen procedures in Teradata-databases.
Voor elke parameter moeten waarden worden opgegeven. Als de gebruiker voor een of meer parameters geen waarde opgeeft, geeft Tableau de Teradata Database-fout weer dat er te weinig waarden voor de opgeslagen procedure zijn opgegeven.
Beperkingen van opgeslagen procedures voor SQL Server-databases
De volgende beperkingen zijn van toepassing op opgeslagen procedures in SQL Server-databases.
Als de resultatenset voor een opgeslagen procedure kolommen van het type IMAGE of TEXT bevat, mislukt de opgeslagen procedure met het foutbericht "Onjuiste syntaxis".
Als de totale breedte van de resultatenset (aantal bytes in elke rij) groter is dan 8060, mislukt de opgeslagen procedure. Dit kan voorkomen bij heel brede tabellen (honderden kolommen) of bij tabellen met grote tekstkolommen, bedoeld voor duizenden tekens aan tekst.
Tableau geeft geen opgeslagen procedures uit het schema 'sys' weer.
Als de gebruiker geen waarde opgeeft voor een of meer parameters die voor de procedure vereist zijn, geeft Tableau een SQL Server-databasefout weer in de vorm 'De procedure vereist een waarde voor parameter @x, maar er is geen waarde opgegeven'.
Opgeslagen procedures die meerdere query's bevatten, moeten de richtlijnen volgen die zijn vermeld in Opmerkingen over opgeslagen procedures (hierboven).
Tableau Desktop ondersteunt het datatype Microsoft SQL Server TIME niet. Wanneer velden van dit type zijn opgenomen in een opgeslagen procedure in een Microsoft SQL Server-database, zal Tableau Desktop deze niet importeren.
Beperkingen van opgeslagen procedures voor SAP Sybase ASE-databases
De volgende beperkingen zijn van toepassing op opgeslagen procedures in SAP Sybase ASE-databases (alleen Windows).
De database moet een correct geconfigureerde externe server hebben.
Als de gebruiker geen waarde opgeeft voor een of meer parameters die voor de procedure vereist zijn, geeft Tableau een Sybase ASE-databasefout weer in de vorm 'De procedure vereist een waarde voor parameter @x, maar er is geen waarde opgegeven'.