Avatar billede prince10 Nybegynder
20. april 2005 - 14:12 Der er 6 kommentarer og
2 løsninger

Stored procedure overførsel af parameter

Jeg har en procedure, hvortil jeg vil overføre en streng som er de felter jeg vil have vist.
Jeg kan ikke få den til at indsætte @selectstring i proceduren
Hvad gør jeg lige forkert?

CREATE PROCEDURE dbo.test
@inParentID int,
@aktiv int,
@selectstring nvarchar(2000)
AS
    SELECT @selecstring FROM tbl_component_master
    WHERE    (tbl_component_master.Active = @aktiv) AND (tbl_component_master.Category_discriminator = @inParentID)
GO
Avatar billede prince10 Nybegynder
20. april 2005 - 14:20 #1
Overfører jeg en enkel værdi som eks:
.Add(New SqlParameter("@selectstring", SqlDbType.NVarChar)).Value = "Description"
får jeg vist rækker korrekt
laver jeg f.eks.
.Add(New SqlParameter("@selectstring", SqlDbType.NVarChar)).Value = "name, Description" - så får jeg en fejl
Avatar billede prince10 Nybegynder
20. april 2005 - 14:23 #2
rettelse første procedure hedder:
CREATE PROCEDURE dbo.SP_TestMaster
@inParentID int,
@aktiv int,
@selectstring NVarChar(2000)
AS
EXEC ('SELECT [' + @selectstring+ '] FROM tbl_component_master where Category_discriminator=29')
GO
Avatar billede herman01753 Nybegynder
20. april 2005 - 14:24 #3
du skal bruge exec kommandoen:
exec @sqlstring + 'mere sql f.eks. select eller where clause'

****
declare @sqlstring nvarchar(255)
set @sqlstring = 'select * from table'
exec @sqlstring + ' where id = 25'
Avatar billede herman01753 Nybegynder
20. april 2005 - 14:25 #4
eller
exec 'select ' + @sqlstring + 'from table where id = 25'
Avatar billede lorentsnv Nybegynder
20. april 2005 - 14:25 #5
Du kan bygge op en select string, som du eksekverer med EXEC:


CREATE PROCEDURE dbo.test
@inParentID int,
@aktiv int,
@selectstring nvarchar(2000)
AS

DECLARE @SQL varchar(3000)

Set SQL = 'SELECT ' + @selecstring  + '
    FROM tbl_component_master
    WHERE    (tbl_component_master.Active = ' + @aktiv + ') AND (tbl_component_master.Category_discriminator = ' + @inParentID + ')'

Exec (@SQL)
GO
Avatar billede herman01753 Nybegynder
20. april 2005 - 14:27 #6
der skal lige en parantes omkring

exec ('select ' + @sqlstring + 'from table where id = 25')
Avatar billede janus_007 Nybegynder
21. april 2005 - 21:22 #7
Hvad er idéen med at opbygge en dynamisk sql i en sp??

Jeg har da sjældent set noget mere sært!!
Avatar billede prince10 Nybegynder
26. april 2005 - 00:45 #8
hm... - ja jeg giver dig ret - var vist ude på et lille sidespor... - men det virkede da selv om det ikke var den helt rigtige måde at gøre det på... *S*
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