Avatar billede stener Nybegynder
22. oktober 2002 - 09:53 Der er 8 kommentarer og
3 løsninger

Stored Procedure

Hvordan laver jeg en sp der kan opdatere 2 tabeller samtidig.

Hvordan får man en sp til at retunere noget?.
Avatar billede bennytordrup Nybegynder
22. oktober 2002 - 09:55 #1
create procedure OpdaterToTabeller
as
  update tabel1 set felt1=NyVærdi
  update tabel2 set felt2=NyVærdi
Avatar billede bennytordrup Nybegynder
22. oktober 2002 - 09:55 #2
For at returnere noget, skal den sidste linie være et select statement.
Avatar billede pierrehusted Nybegynder
22. oktober 2002 - 09:56 #3
Du kan sætte så mange UPDATE sætninger i en SP som du har lyst til.

Alle SELECT sætninger i en SP kommer som output.



Hvad skal din SP kunne gøre ??  Så kan jeg da komme med et forslag.
Avatar billede bennytordrup Nybegynder
22. oktober 2002 - 09:56 #4
I mange tilfælde skal du bruge "set nocount on" som det første statement i SP og så umiddelbart inden det select statement, der skal returnere, indsætte "set nocount off".

Hvis der er kode efter den select, skal der "set nocount on" efter select-statement.
Avatar billede ocp Nybegynder
22. oktober 2002 - 09:57 #5
create proc spUpdateTwo
  @one varchar(255),
  @two varchar(255),
  @out varchar(255) output
as
  update tableone
  set modified = 1
  where myfield1 = @one

  update tabletwo
  set modified = 1
  where myfield2 = @two

  select 'Dette bliver returneret som et recordset'

  set @out = 'Dette bliver returneret som en variabel - husk at kalde således "spUpdateTwo 'param1','param2', @outparam output"'
Avatar billede stener Nybegynder
22. oktober 2002 - 10:08 #6
Tak for det kigger lige på det.

En af jer der ved hvor man kan få noget standard info om sp'er.

Det som min sp engentlig skal gøre er følgende:

Checke for om en bruger findes i tabellen users.(Får values fra formfelter) Hvis han gør retunere noget som jeg kan checke på i min kode.

Hvis han ikke gør skal den hvis x er = 1

Opdatere i tabellen users

Hvis han ikke gør skal den hvis x er = 2

Opdatere i tabellen users , users_info_privat

Hvis han ikke gør skal den hvis x er = 3

Opdatere i tabellen users, users_info_forhandler

Mvh

Stener
Avatar billede bennytordrup Nybegynder
22. oktober 2002 - 10:24 #7
Hvilke informationer giver du ind?
Avatar billede stener Nybegynder
22. oktober 2002 - 11:16 #8
Har en variable med der kan være 1 2 eller 3 alt efter hvad brugeren vil oprettes som.

Users:

Userid (autonum)
Username password status email active (fra form felter)

users_info_privat
P_id (autonum)
P_userid (skal tages fra tabellen users(Userid))
P_Navn P_by P_postnummer P_vejnavn P_telefon (fra formfelter)

users_info_forhandler
F_id (autonum)
F_userid (skal tages fra tabellen users(userid)
F_Navn, F_By og nogle flere... (fra form felter)
Avatar billede bennytordrup Nybegynder
22. oktober 2002 - 11:29 #9
<SQL>
create procedure ValidateUser
(
    @X tinyint,
    @UserID int,
    @UserName nvarchar(50),
    ...
)
as
    set nocount on
   
    declare @UserExists bit 
    declare @NewUserID int
   
    select @UsersExists = exists ( select userid from Users where Userid=@UserID)
   
    if @UsersExist=0 begin
        insert    Users (UserName, ...)
        values    (@UserName, ...)
        select @NewUserID=Scope_identity

        if @X=2 begin
            insert    users_info_privat (P_UserID, P_Navn, ...)
            values    (@NewUserID, @P_Navn, ...)
        end
        if @X=3 begin
            insert    users_info_forhandler (F_UserID, F_Navn, ...)
            values    (@NewUserID, @F_Navn, ...)
        end
    end

    set nocount off
    select @UserExists as UserExists, case @UserExists when 0 then @NewUserID else @UserID end as UserID

</SQL>

Her er skabelonen til en sådan procedure. Du skal udfylde med yderligere parametre samt felter/værdier i de forskellige inserts.
Avatar billede bennytordrup Nybegynder
22. oktober 2002 - 11:29 #10
Den returnerer 0 eller 1 efter om brugeren eksisterer. Hvis 1 returneres også brugerid, hvis 0 returneres det brugerid, brugeren blev oprettet med.
Avatar billede stener Nybegynder
24. oktober 2002 - 11:24 #11
Tak for besvarelserne.

Fik den ikke til at virke men den hjalp mig til at lave en der gjorde..
 
Har lige et spørgsmål mere :).
http://www.eksperten.dk/spm/274437
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