Hej! Hej igen! Hej, inte relaterat till frågeställningen, men att ha stored procedures som heter "sp_nånting" är en dålig idé, detta gör att SQL-servern automatiskt letar i Master-databasen efter SPn först och sen om den inte hittas så letar den i din databas. Om inte detta är ändrat på senare tid, men jag har inte hört något om det. Tack för synpunkten ang namnet på proceduren. När det gäller datatyper så är det nog där det felar på något vis. Variabeln jag använder i proceduren tilldelas ett värde från en sessionsvariabel i skriptet som har värdet "31.04" exempelvis. Men när denna variabel "läses" av proceduren så blir den alltså bara "31" som det verkar, eftersom jag får ut alla poster som har värde som börjar med 31, såsom 31.09 osv. Motsvarande värdet i tabellen är i av typen varchar, och i det fältet fylls alltså i ett värde som kallas "MSA" och består av typen 31.01, 31.02 osv. Men jag får bara fram 31 till proceduren. Ok, du får ju använda samma datatyp i SPn.. Nu fungerade det! TACK! :-) Parentesen anger hur många byte som skall allokeras till datatypen. Jag valde (53) eftersom det är "standardstorleken" en varchar får när man skapar den i tabellen (scripta ut tabellen och kolla), när man i SPn definerar en varchar utan längd så får den en standardlängd (för att spara minne antar jag), och förmodligen är den för liten för att innehålla hela variablen du skickar in, därför blev det fel.Vad är fel med denna Stored Procedure?
Har gjort en test testsida för att plocka ut data ur en SQL databas med hjälpa av en stored procedure som jag kallar sp_test. Jag vill ha ut poster med ett unikt nummer som jag kallar "MSA" i databasen. De poster jag vill ha ut på min testida ska ha "MSA" 31.04. Variabeln "vMSA" i koden tilldelas detta nummer.
Tyvärr så plockar proceduren ut andra poster med andra "MSA", istället för det unika jag tilldelar variabeln "vMSA". Exempelvis kommer poster med MSA 31.10 med i resultatet också. Detta fastän jag specifikt sätter variablen som skickas till min procedure. Nedan är den korta koden för hämtning av data från SQL-server via ASP. Under ASP-koden finns sedan koden till den Stored Procedure jag anropar på ASP sidan. Kan någon vänlig själ kolla och kanske se vad som är fel? Tacksam för all hjälp jag lan får med detta. Tack på förhand!
Koden på ASP-sidan ser ut så här:
<%
Dim vMSA
vMSA = "31.04"
Set objConn = Server.CreateObject("ADODB.Connection")
Set ObjRec=Server.CreateObject("ADODB.RecordSet")
With objConn
.ConnectionString="Provider=sqloledb;Data Source=eltel-networks;Initial Catalog=ElTel;User
Id=*****;Password=*****;"
.Open
End With
With ObjRec
.ActiveConnection = objConn
.Source = "sp_test " & vMSA ,objConn
.Open ,,1,2
End With
%>
Min storec procedure ser ut så här:
CREATE proc sp_test
@vMSA numeric
AS
SELECT * FROM Registrering WHERE MSA=@vMSA ORDER BY ID DESC
GOSv: Vad är fel med denna Stored Procedure?
Har kommit på att det måste ha något med punkten i "MSA" att göra. Jag ville ha ut poster med "MSA" med värdet 31.04. Men jag får också ut poster med värdena 31.06 och 31.10. Har andra "MSA" som heter exempelvis 32.10 och de plockas inte ut. Är det så att SQL server inte tar med hela "MSA" utan bara går på det före punkten? Hur gör jag i så fall för att variabeln ska tolkas som en sträng och hur formulerar jag det i min stored procedure? Sv:Vad är fel med denna Stored Procedure?
Ang. din fråga, det behövs nog lite mer information om datatyper i tabellen, det låter som om det är något där som strular (eller WAI).Sv: Vad är fel med denna Stored Procedure?
Jag har testat att ändra datatyp i proceduren men det blir ingen skillnad. Vore oerhört tacksam om någon riktigt kunnig kunde kika lite på detta och förhoppningsvis se vad jag gör för fel. Tack på förhand!Sv: Vad är fel med denna Stored Procedure?
Sv:Vad är fel med denna Stored Procedure?
<code>
CREATE proc sp_test
@vMSA varchar(53)
AS
SELECT * FROM Registrering WHERE MSA=@vMSA ORDER BY ID DESC
GO
</code>
Ev. får du ändra om i din asp-kod:
<code>
With ObjRec
.ActiveConnection = objConn
.Source = "sp_test '" & vMSA & "'",objConn
.Open ,,1,2
End With
</code>
Jag har ingen möjliget att testa asp, men jag gjorde en testdatabas och:
<code>
sp_test '31.12'
</code>
i en Query Analyzer producerar önskvärt resultat.. :)Sv: Vad är fel med denna Stored Procedure?
Jag är mer eller mindre novis när det gäller stored procedures, så jag vore tacksam om du kan förklarar den där parentesen med 53 brevid datatypen. Jag har testat med enbart varchar förut, och samma typ av procedure med datatypen "int" behöver inte någon parentes för att fungera.
Hur som helst STORT tack för hjälpen med detta!Sv:Vad är fel med denna Stored Procedure?
Som standard bruka jag deklarera alla variabler i SP i samma storlek som i tabellen jag ska göra urval, man får mindre problem då.. :)