Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Var gör jag för fel i min SP?

Postades av 2005-03-02 15:31:31 - Mikael Johansson, i forum sql-server/msde, Tråden har 12 Kommentarer och lästs av 599 personer

Har en SP som inte vill fungera. Den fungerar tills jag sätter Return framför, då vill den inte alls. Fungerar även om jag tar bort (Select * From db2 Where db2.Matarnr=db1.Matarnr). Den klagar på db1 att den inte skulle finnas, men det gör den.

<code>
CREATE PROCEDURE dbo.CountBort
(
@Lista Varchar(50)
)
As
Return(Select Count(id) From db1 Where Exists (Select * From db2 Where db2.Matarnr=db1.Matarnr) AND Lista=@Lista)
</code>


Svara

Sv: Var gör jag för fel i min SP?

Postades av 2005-03-02 15:38:10 - Håkan Borneland

Hej!

Deklarera en int variabel.
Tilldela den värdet av select satsen.
Returnera variabeln.
EDIT: Såg nu att jag inte läst frågan ordentligt. Återkommer.
EDIT IGEN: Det jag skrev först borde fungera.

//Håkan


Svara

Sv:Var gör jag för fel i min SP?

Postades av 2005-03-02 16:17:43 - Johan Svensson

Nu är jag inte med på vad du försöker göra...

För en SP använder du inte RETURN, den skickar automatiskt tillbaka de recordset som du skapar om du inte anger NOCOUNT ON.

Om du däremot vill returnera data till olika variabler så deklarerar du dessa som vilken parameter som helst med tillägget OUTPUT och sätter dem till det värde du vill returnera.

Om du vill använda nyckelordet RETURN så skall du istället skapa en funktion och inte en sp.


Lycka till!

// Johan


Svara

Sv: Var gör jag för fel i min SP?

Postades av 2005-03-02 16:25:01 - Håkan Borneland

Johan

Visst fungerar det med RETURN i SP.
T.ex. för att skicka ut felkoder, om något inte gick bra.
Förstår hur Hans tänker, det fungerar också att göra så.
Kanske mer renodlat som du skriver.....

//Håkan


Svara

Sv: Var gör jag för fel i min SP?

Postades av 2005-03-02 16:25:50 - Mikael Johansson

De returnerade inte något värde utan return (asp.net).

Men jag löste det tack vare deklarationen. Denna funkar fint :)

<code>
CREATE PROCEDURE dbo.CountBort
(
@Lista Varchar(50)
)
As
Declare @CountBort int
Select @CountBort = (Select Count(id) From db1 Where Exists (Select * From db2 Where db2.Matarnr=db1.Matarnr) AND Lista=@Lista)
Return(@CountBort)
</code>


Svara

Sv:Var gör jag för fel i min SP?

Postades av 2005-03-02 16:43:44 - Johan Svensson

Hej Håkan,

Det går, som du helt riktigt skriver, att använda RETURN med SP, men det är inte från början tänkt att användas så. RETURN är tänkt att användas med funktioner. Därför finns det vissa varianter med SP och RETURN som kan krångla till det. Därav jag försökte förklara hur man kan göra för att det skall fungera "enligt konventionerna".

På samma sätt kan jag också få en funktion att returnera ett recordset även om den inte är tänkt att göra så. SQL ärganska flexibelt och man kan ofta göra saker som det inte var tänkt från början, vilket många gånger är bra eftersom man då inte hindras att lösa framtida problem som inte funnits med i tankarna då SQL språket designades... :-)

// Johan


Svara

Sv: Var gör jag för fel i min SP?

Postades av 2005-03-02 22:00:09 - Christoffer Hedgate

Vad pratar du om? Procedurer har funnits i SQL Servers T-SQL betydligt längre än funktioner, och procedurer har alltid kunnat returnera ett värde med return. Det är inget fel alls i att göra så, det är ett utmärkt sätt att returnera ett heltal för att signalera något till den som anropat proceduren. Visst kan man göra samma sak med utparametrar, men det finns inget rätt eller fel i det ena eller det andra.


Svara

Sv:Var gör jag för fel i min SP?

Postades av 2005-03-03 09:20:14 - Håkan Borneland

Tänkte skriva någonting men....
Christoffer fick med ungefär det jag tänkte skriva.

//Håkan


Svara

Sv:Var gör jag för fel i min SP?

Postades av 2005-03-03 10:27:06 - Johan Svensson

Det känns som om mitt resonemang helt missförstås här. Jag försöker inte påstå när olika saker implementerats eller har förnekat att det går att använda RETURN med SP. Det vore korkat av mig att förneka det uppenbara.

Vad jag försöker säga (och här krävs det lite kunskaper i programmeringshistoria) är att procedurer från början är tänkt att inte returnera enskilda tal, utan att funktioner var tänkt för denna uppgiften. Med tiden så har dessa två element, psp och funktioner, flutit ihop allt mer och i praktiken är det sällan skillnad på dessa idag och har som sagt inslag lånade av varandra. Och jag ser inget fel med det.

Vad jag har försökt att säga att även om man kan göra det mesta på flera olika sätt så kan det vara onödigt att krångla till det. Med lite kunspaer i programmeringshistoria i bagaget så kan man ofta se enklare vägar. Därmed inte sagt att andra sätt är fel! I många fall är det dessutom en smaksak.

Så försök inte tolka in andra saker i det jag skriver eller försök lägga ord i min mun.


<b>>Procedurer har funnits i SQL Servers T-SQL betydligt längre än funktioner</b>

Det där är rent ut sagt bullshit. Så länge du pratar om T-SQL så har både funktioner och sp funnits med från början.


Svara

Sv: Var gör jag för fel i min SP?

Postades av 2005-03-03 10:43:12 - Mikael Johansson

I detta fallet blev det lättast att göra på detta sättet. Det finns andra fall jag använder mig av output, men i detta fallet valde jag en return.


Svara

Sv: Var gör jag för fel i min SP?

Postades av 2005-03-03 22:36:41 - Mikael Wedham

<Det där är rent ut sagt bullshit. Så länge du pratar om T-SQL så har både funktioner och sp funnits <med från början.

Och det där är också bullshit, för funktioner som man skapar själv (s.k. User Defined Functions) kom med SQL 2000. Procedurer (inte bara sp=system procedures) har däremot funnits "alltid"

/micke


Svara

Sv: Var gör jag för fel i min SP?

Postades av 2005-03-06 12:21:54 - Christoffer Hedgate

Vad har programmeringshistorik med denna frågan att göra? Du säger, åtminstone som jag läser det, klart och tydligt i två meddelanden att nyckelordet RETURN (i T-SQL, oavsett hur programmering i största allmänhet fungerar) inte ska användas med lagrade procedurer, vilket jag säger är helt fel. Håkan svarar två gånger helt korrekt på frågan och bägge gångerna kommenterar du att hans svar inte är riktigt bra.

Som Micke skrev så har användardefinierade funktioner inte funnits i SQL Server lika länge som lagrade procedurer. Där var jag tyvärr kanske lite otydlig när jag bara pratade om funktioner, men iom att du skrev som nedan så antog jag att det var just UDFer som diskuterades.

>Det går, som du helt riktigt skriver, att använda RETURN med SP, men det är inte från början tänkt att användas så. RETURN är tänkt att användas med funktioner.

Som sagt, i SQL Server skapades nyckelordet RETURN från början för att returnera ett skalärt värde från en procedur. Notera också att SQL Servers begrepp procedur och funktion (användardefinierad funktion) inte riktigt motsvarar de begrepp du nämner. Det största användningsområdet för användardefinierade funktioner i SQL Server 2000 är som ett alternativ till vyer, där man returnerar en tabellvariabel. Man kan även skapa skalära UDFer, dvs som returnerar ett värde, men dessa går inte att anropa på annat vis än att referera till dem i en SQL-fråga.


Svara

Sv:Var gör jag för fel i min SP?

Postades av 2005-03-06 22:10:47 - Johan Walldov

hm

om jag inte är helt fel på det så kom udf'er först i och med
sql server 2000 det fanns i alla fall inte i version 6.5
/JW


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 619
27 953
271 709
496
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies