Avatar billede left Nybegynder
12. april 2004 - 05:41 Der er 3 kommentarer og
1 løsning

Insert af selects vha. SP

Fra en hjemmeside (asp) sendes et ID og DATO. På baggrund af ID findes indholdet af 2 kolonner fra en bestemt post i en tabel. Dataen fra de 2 kolonner + DATO gemmes nu i den nye post med 3 kolonner i en anden tabel.

--= Eksempel =--

Table_Skabelon:
1  Data1  Tema1
2  Data2  Tema2
3  Data3  Tema3

Nu modtager SP'en så datoen "05-05-04" og ID'et 2.

Med disse oplysninger laver SP'en nu en ny post til en anden tabel med oplysningerne (de 3 kolonner):

05-05-04  Data2  Tema2

Som nævnt skal det laves i en SP - men hvordan?
Avatar billede trer Nybegynder
12. april 2004 - 09:07 #1
noget i denne stil:

create procedure myproc (@id int, @dato datetime)
as
begin
  insert into tabel2 (dato,data1,tema1)
  select @dato,data1,tema1
  from tabel1
  where id=@id
end
go
Avatar billede left Nybegynder
12. april 2004 - 15:15 #2
Det virker næsten :-)

Den klager over datoen, når jeg forsøger at sende f.eks. "11-07-2004 22:00:00"
Kolonnen er sat til Datetime, så det burde ikke være det der er galt. Når jeg ændre i SP'en, så den skal modtage 2 tal og derefter også ændre kolonnen i tabellen til at modtage tal, så virker det. Men så snart det har noget med dato at gøre, får jeg følgende fejl:

Microsoft OLE DB Provider for SQL Server error '80040e14'
Line 1: Incorrect syntax near '-'.

Jeg formoder at '-' er en del af datoen.
Avatar billede left Nybegynder
12. april 2004 - 15:24 #3
Doh !

Glemte at mit sql-udtryk jo skal have ' foran og bagved datoen inden den sendes.

Hvis ovenstående operation skal ske 15 gange for 100 forskellige id'er - har du et forslag til hvordan det sker mest effektivt?

Lige nu kaldes nedenstående for hver gang - og det lyder ikke for mig som værende mest effektivt. Dog sker det kun en enkelt gang i måneden, men alligevel.

dato = "11-07-2004 22:00:00"
sql = "myproc" & " " & id &",'"&dato&"'"
set RS = Server.CreateObject("ADODB.Recordset")
RS.Open sql,conn

Mange tak for hjælpen - du får points uanset.
Avatar billede trer Nybegynder
12. april 2004 - 18:34 #4
Du kan sørge for at lægge indeks på alle kolonner som bruges i sql'en - specielt til at joine og where betingelse.

Derudover - hvis du vælger de 100 id'er via sql - så lav det hele som en sp. Men ellers er det ikke slemt performance mæssigt.

En ting - sørg for at angive dbo.mintabel istedet for blot mintabel - det kan øge performance.

Tak for points :-)
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