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


Stored procedure: Möjligt att få ouput parameters till en RS

Postades av 2002-07-03 13:17:56 - Sebastian Hyvonen, i forum databaser, Tråden har 7 Kommentarer och lästs av 946 personer

Hej,

Är det möjligt att få parametrar som är definierade som OUTPUT till en recordset typ:

<code>

With cmd
.CommandText = "test_proc"
.CommandType = adCmdStoredProc
.ActiveConnection = "Provider=SQLOLEDB;Data Source=SQWEBDEV;Initial Catalog=TOLTEST" & _
";User ID=sa;Password=sa"

Set param1 = .CreateParameter("KEYID", adVarChar, adParamInput, 1, "L")
.Parameters.Append param1

Set param3 = .CreateParameter("OI_OLIOLUOKKA", adVarChar, adParamOutput, 2)
.Parameters.Append param3

Set param4 = .CreateParameter("OI_OIKEUS", adVarChar, adParamOutput, 2)
.Parameters.Append param4

'Set rs = .Execute(, adExecuteNoRecords)
Set rs = .Execute ' <--- out parametrarna hit ?

</code>

Jag vet att man får outparametrarnas värde från command objektet.

Proceduren ser typ ut såhär:

CREATE PROCEDURE test_proc
@KEYID VARCHAR,
@OI_OIKEUS VACHAR OUT,
@OI_OLIOLUOKKA VARCHAR OUT

AS

...
...


Svara

Sv: Stored procedure: Möjligt att få ouput parameters till e

Postades av 2002-07-03 14:38:52 - Tommy Winberg

Du får nog peta in parametrarna i recordsetet själv. Det är väl knappast aktuellt men i ADO.NET kan en DataAdapter göra det du vill.

/Tommy


Svara

Sv: Stored procedure: Möjligt att få ouput parameters till e

Postades av 2002-07-03 15:21:29 - Sebastian Hyvonen

Jag gjorde så att jag satt i Stored proceduren:

SELECT outparam1=0,outparam2=0 FROM xxx för att få dom till recordsettet.

Frågar är nu hur går det att edidetar innehållet i recordset.

rs.fields(0) är nu 0 och vill ändra värdet typ rs.fields(0) = 1

Nu kommer det error: "Current recordset does not support updating. This may be a limitation of the provider, or the selected lock type."

Har testat med alla locktypes.

Koden ser tex. ut såhär:

<code>
rs.CursorLocation = adUseServer
rs.CursorType = adOpenDynamic
rs.LockType = adLockOptimistic
Set rs = cmd.Execute()
</code>


Svara

Sv: Stored procedure: Möjligt att få ouput parameters till e

Postades av 2002-07-03 21:56:24 - Tommy Winberg

För att uppdatering skall fungera måste primärnyckeln vara med i ditt recordset. Det går ej att joina tabeller eller använda funktioner (t ex isnull(kolumn, ersättningsvärde)). ADO kan inte tolka till vilken kolumn och tabell din variabel hör.

Jag kan inte se varför du vill göra det. OK, du vill ha ett recordset för att transportera värdena. Om du alltid bara hämtar en rad kan du lika väl skapa en klass eller egendefinierad datatyp som du petar in värdena i?

Sedan får du skapa en funktion som sparar värdena med hjälp av en lagrad procedur eller bygger sql-satsen och kör kommandot som krävs för att uppdatera. Detta går ju bra även om du använder ett frikopplat recordset, det är bara det att du inte kan använda de inbyggda Update eller UpdateBatch metoderna på recordset objektet.

/Tommy


Svara

Sv: Stored procedure: Möjligt att få ouput parameters till e

Postades av 2002-07-04 09:42:17 - Tommie Severinsson

Om jag läser ditt inlägg och tolkar det rätt så vill du ha värden som är kopplat till ett ID och då räcker det så här:

-- Store Proceduren
<code>
CREATE PROC
@ID INT

AS
SELECT fält1, fält2
FROM tblTabell
WHERE ID = @ID
GO

--ASP SIDAN
'Variabel
sID = Request("tID")

'Referens till connection objekt
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "DSN","UID","PASSWORD"

'Referens till command objeket
Set oCmd = Server.CreateObject("ADODB.Command")
Set oCmd.ActiveConnection = oConn
oCmd.CommandText = "sproc_getValues"
oCmd.CommandType = adCmdStoredProc

'Skjut in värdet
oCmd.Parameters.Append oCmd.CreateParameter("ID", adInteger, adParamInput, 4, sID)

'Exekvera command objektet
Set oRs = oCmd.Execute

'Skriv ut värdena
Do While Not oRs.EOF
Response.Write oRs.Fields("fält1")
Response.Write oRs.Fields("fält2")
oRs.MoveNext
Loop

'Döda all referenser
Set oRs = Nothing
Set oCmd = Nothing
oConn.Close
Set oConn = Nothing
</code>

Nu använder jag inte WITH, man får sämre överskådlighet, plus att asp tolken blir känsligare för diverse sakeroting.... Men det är ju bara vad jag tycker.. ;)

När du lägger adParamOutput i din parameter kollektion så tänk på att dom alltid måste ligga överst...

EX:
<code>
oCmd.Parameters.Append oCmd.CreateParameter("sID", adInteger, adParamOutput) 'OUTPUT Alltid överst
oCmd.Parameters.Append oCmd.CreateParameter("sVärde1", adVarChar, adParamInput, 50, sträng)
oCmd.Parameters.Append oCmd.CreateParameter("sVärde2", adVarChar, adParamInput, 50, sträng)

oCmd.Execute
</code>

woohooooooo...


Svara

Sv: Stored procedure: Möjligt att få ouput parameters till e

Postades av 2002-07-04 11:14:02 - Sebastian Hyvonen

>Jag kan inte se varför du vill göra det. OK, du vill ha ett <br>
>recordset för att transportera värdena. <br>
>Om du alltid bara hämtar en rad kan du lika väl skapa en klass eller <br>
>egendefinierad datatyp som du petar in värdena i?

<br><br>
Saken e den att jag håller på att konvertera ett stort program som använder SOLID databas till att använda SQL Server.
<br>
I Solid kan en procedur se ut såhär:<br>
<code>
CREATE PROCEDURE CHKHARRA ( KEYID INTEGER )
RETURNS ( INDEX SMALLINT )
BEGIN
SET INDEX = 999;
...
...
END
</code>
<br>
Och med DAO har jag tillgång till värdet INDEX i en recordset. Med ADO+Sql server kommer OUT värdena till command objektet.
<br><br>
Problemet är det att programmet är mycket stort och innehåller >1500 stored procedurer. Jag skulle villa undvika att göra ändrigar i själva koden (ziljoner CALL:s i själva vb-koden) . Därför vill jag få OUT värdena i recorset object.
<br><br>
rs("index") <-- I would love to do that :-)
<br><br>
Därför tänkte jag att det skulle gå att för det första returnera OUT parametrarnas namn i en SELECT index=0 FROM xxx
och sen i VB-koden sätta det egentliga index värdet från command objektet i recordsetten.
<br><br>
Typ att min RS skulle funka som en vanlig collection.
<br><br>
rs("index") = cmd.parameters("index")
<br><br>

Häls,
Seabas






Svara

Sv: Stored procedure: Möjligt att få ouput parameters till e

Postades av 2002-07-04 17:47:01 - Johan Djupmarker

Jag har säkert missuppfattat allt nu, men kan du inte bara göra såhär?

SELECT 999 AS [INDEX]

/Johan


Svara

Sv: Stored procedure: Möjligt att få ouput parameters till e

Postades av 2002-07-05 23:06:01 - Pelle Johansson

Det enklaste sättet (som jag tycker) är att ha 2 procedurer i en och samma procedur. Nu vet jag inte vad du skall returnera men säg att det är en insert-procedur och du skulle sedan vilja veta hur många poster som finns efter att du gjort en insert:

create procedure testIns
@namn varchar(50)
as
insert into test (namn) values(@namn)

select count(*) as antal from test

-------------
Som du ser ovan så så använder du den på följande sätt Query Analyzer:
testIns 'Kalle'

För att göra anropet via ASP så ser det ut som följer:

<%
varde = "Olle"
set rst=con.execute("testIns '" & varde & "')
antal = rst(0)

response.write "Det finns " & antal & " poster i tabellen test"
%>

Hälsningar
/Pelle


Svara

Nyligen

  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino
  • 04:14 Vad finns det för kratomalternativ
  • 14:16 Indian online casino
  • 14:15 Indian online casino

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 570 878
27 965
271 771
951
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