/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Retur værdi fra stored procedure i MSSQL
Fra : Morten Isaksen


Dato : 15-07-04 12:18

Hej!

Jeg har lavet følgende stored procedure:

ALTER PROC sp_portstatus

@strServerIP VARCHAR(30),
@strcmd VARCHAR(20),
@strport VARCHAR(20)

AS

DECLARE @Cmd VARCHAR(300)

SELECT @Cmd = 'echo y | c:\kundestyring\plink -i
c:\kundestyring\sshkey\priv.ppk brugernavn@' + @strServerIP + '
../portstatus.pl ' + @strcmd + ' ' + @strport

EXEC Master..xp_cmdShell @Cmd

Der kører en kommando på en Linux server vha. plink. xp_cmdshell
returnerer et resultset, hvor jeg skal bruge værdien i første række.

Jeg skal enten have lavet proceduren om så den kun returnerer den
værdi der er i første række eller have forklaret hvordan jeg finder
denne værdi fra resultsettet i t-sql. Jeg troede ellers lige jeg havde
fundet ud af det med:

declare @tbl table
insert into @tbl exec sp_portstatus @param1, @param2, @param3

men det virker ikke

Jeg har på fornemmelsen at det er meget simpelt, men jeg stiret mig
blind på det.

Mvh
Morten Isaksen

 
 
Peter Lykkegaard (15-07-2004)
Kommentar
Fra : Peter Lykkegaard


Dato : 15-07-04 12:25

"Morten Isaksen" wrote

> Jeg har på fornemmelsen at det er meget simpelt, men jeg stiret mig
> blind på det.
>
Et hint?

input/OUTPUT

- Peter



Morten Isaksen (15-07-2004)
Kommentar
Fra : Morten Isaksen


Dato : 15-07-04 20:07

On Thu, 15 Jul 2004 13:24:30 +0200, Peter Lykkegaard wrote:

> "Morten Isaksen" wrote
>
>> Jeg har på fornemmelsen at det er meget simpelt, men jeg stiret mig
>> blind på det.
>>
> Et hint?
>
> input/OUTPUT

Hmm... Skal det virkeligt være så besværligt? Kan man undgå at oprette den
midlertidge tabel i nedenstående?

create PROC sp_dir

@path VARCHAR(50),
@res nvarchar(500) output

AS
CREATE TABLE #cmdres (lines nvarchar(500))
DECLARE @Cmd VARCHAR(300)

SELECT @Cmd = 'dir ' + @path

insert into #cmdres EXEC Master..xp_cmdShell @Cmd
select @res=lines from #cmdres where lines like '%label%'

GO

--
Morten Isaksen
http://www.aub.dk/~misak/

Peter Lykkegaard (15-07-2004)
Kommentar
Fra : Peter Lykkegaard


Dato : 15-07-04 23:11

"Morten Isaksen" wrote

>Peter Lykkegaard wrote:
>
> >
> > input/OUTPUT
>
> Hmm... Skal det virkeligt være så besværligt?

Jep, du skal lige angive en direktion
Ala ByVal/ByRef i VB

> Kan man undgå at oprette den
> midlertidge tabel i nedenstående?
>
> select @res=lines from #cmdres where lines like '%label%'
>
@Res er jo en variable og du kan ikke hente flere rækker ind i en
variable

Hvilket sprog bruger ovenpå MSSQL?

select lines from #cmdres where lines like '%label%'

Giver et recordset i VB

Du kan teste dine forsøg i Query Analyzeren (er en del af MSSQL)

- Peter



Morten Isaksen (15-07-2004)
Kommentar
Fra : Morten Isaksen


Dato : 15-07-04 23:28

On Fri, 16 Jul 2004 00:10:59 +0200, Peter Lykkegaard wrote:

>> select @res=lines from #cmdres where lines like '%label%'

> @Res er jo en variable og du kan ikke hente flere rækker ind i en
> variable

Det ved jeg godt. Jeg skulle bare have et eller andet over i variablen da
jeg testede og jeg vidste at der kun stod "label" i en række.

> Hvilket sprog bruger ovenpå MSSQL?

Det jeg skal lave er i T-SQL, der kører som et batch job på selve SQL
serveren. Det skal også bruges i en klient ting, der er skrevet i Delphi,
men det er heldigvis ikke min hovedpine.

Jeg tror nok jeg har fattet princippet nu.


--
Morten Isaksen
http://www.aub.dk/~misak/

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste