Avatar billede wendt Nybegynder
13. maj 2003 - 10:06 Der er 6 kommentarer og
1 løsning

Kan man benytte TABLE variable som parameter til stored procedure

Så vist jeg kan læse i Books online kan alle datatyper benyttes som parametre til stored procedures, synes bare ikke rigtigt at det virker.

Er der nogen der har erfaring med det ?
Avatar billede venne Nybegynder
13. maj 2003 - 11:34 #1
Det tror jeg ikke du kan. Der er en del begrænsninger på table variable, bla. at de kun lever i det scope, hvor de er defineret. Det antyder (for mig) at de ikke kan føres over til en anden procedure.

Men jeg har på den anden side ikke fundet noget sted hver det står sort på hvidt, så hvad ved jeg egentlig? Og jeg har heller ikke selv prøvet det - måske andre ved noget mere.
Avatar billede amerikaner Nybegynder
19. maj 2003 - 12:19 #2
Jeg kan ikke sig hvad du gøre forkert...men yea...SQL Server 2000 offers a new data type called "table."

Its main purpose is for the temporary storage of a set of rows (replacing temp tables). A variable, of type "table," behaves as if it is a local variable. And like local variables, it only exists within the batch, function, or stored procedure in which it was declared.

In most cases, a table variable can be used like a normal table. SELECTs, INSERTs, UPDATEs, and DELETEs can all be made against a table variable.

Here is the typical Northwind example.

-- we declare our table variable first

declare @SpecialCustomers TABLE (
CustomerID nchar (5) NOT NULL ,
OrderID int NOT NULL ,
ShipVia int NOT NULL,
Freight money NOT NULL)

-- now we populate the in-memory table variable with the record information needed for the update

insert into @SPecialCustomers select CustomerID, OrderID, ShipVia, Freight
from dbo.Orders where ShipVia =1 AND Freight >50.25

-- and finally we update the affected records
-- in our regular orders table with our new shipper and price information,
-- using the @SpecialCustomers TABLE variable just
-- as we would a real, physical table in the database:

UPDATE ORDERS SET ShipVia=4, Freight =21.00
where ORDERS.OrderID IN (SELECT ORDERID FROM @SpecialCustomers)
Avatar billede wendt Nybegynder
19. maj 2003 - 12:32 #3
Jeg er helt med på der er en ny datatype TABLE, spørgsmålet kig på om denne datatype kunne benyttes som parameter til en stored procedure
Avatar billede websmith Nybegynder
19. maj 2003 - 12:36 #4
Det tror jeg ikke, dog kan du jo vælge at oprette en temporary table, i modsætning til en memory table. og så i din stored procedure tilgå de data som ligger i den table. Du kan så sende navnet med på din temporary table med til din stored procedure.
Avatar billede websmith Nybegynder
19. maj 2003 - 12:40 #5
Dvs. et eller andet med:

create table #temp1
(
unid int
)

exec _sp_DinSP "#temp1"

Du skal nok så huske at slette din table igen. jeg kan ikke huske hvad sql server gør med temporary tables, men du kunne jo slette den i din SP når du er færdig med den
Avatar billede wendt Nybegynder
19. maj 2003 - 12:46 #6
Det her tror jeg faktisk godt jeg kan bruge.
Avatar billede websmith Nybegynder
19. maj 2003 - 12:49 #7
Det var jo godt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester