Bonjour, ik ben voor het eerst in mijn leven bezig met stored procedures, en tot nu toe gaat het goed; alleen ik kom niet uit de volgende.
Ik heb een tabel en die wil ik dynamisch oproepen, dus met wat hulp van google heb ik het volgende in elkaar geknutseld:
Dat resulteert in deze fout:
Dan pas ik het type van @relationID aan naar varchar(100) en dan werkt het wel. Dat vind ik nogal apart, iemand enig idee waarom?
Ik geef de volgende waardes vervolgens mee aan de stored procedure:
@lookupField = Street
@lookupTable = Address
@relationField = VisitAddressId
@relationID = 9
en dan klik ik op execute en krijg ik 2 grids terug in SQL Server Management Studio:

Nou die bovenste wil ik wél, maar die onderste dus mooi niet.
Als ik nu in Visual Studio de Stored Procedure toevoeg aan mijn dataset krijg ik het volgende te zien:

Nou is dat dus niet de bedoeling, want ik wil wel mijn return_value terug krijgen
Als ik gewoon een query inklop (dus zonder dat ik daarna een exec in de procedure doe) dan werkt het allemaal prima, dus daar zit volgens mij de fout. Moet ik daar extra parameters aan meegeven o.i.d.?
Ik heb een tabel en die wil ik dynamisch oproepen, dus met wat hulp van google heb ik het volgende in elkaar geknutseld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| USE [BackD]
GO
/****** Object: StoredProcedure [dbo].[GetComplexRelationField] Script Date: 03/12/2008 08:24:54 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[GetComplexRelationField]
@lookupField varchar(100),
@lookupTable varchar(100),
@relationField varchar(100),
@relationID int
AS
declare @abc varchar(300)
select @abc = ('SELECT ' + @lookupField + ' AS return_value
FROM [dbo].[' + @lookupTable + ']
WHERE ID =
(SELECT ' + @relationField + ' FROM [dbo].[Relation] WHERE
ID = ' + @relationID + ')')
exec(@abc)
GO |
Dat resulteert in deze fout:
code:
1
2
3
4
5
6
| Msg 245, Level 16, State 1, Procedure GetComplexRelationField, Line 15
Conversion failed when converting the varchar value 'SELECT Street AS return_value
FROM [dbo].[Address]
WHERE ID =
(SELECT VisitAddressId FROM [dbo].[Relation] WHERE
ID = ' to data type int. |
Dan pas ik het type van @relationID aan naar varchar(100) en dan werkt het wel. Dat vind ik nogal apart, iemand enig idee waarom?
Ik geef de volgende waardes vervolgens mee aan de stored procedure:
@lookupField = Street
@lookupTable = Address
@relationField = VisitAddressId
@relationID = 9
en dan klik ik op execute en krijg ik 2 grids terug in SQL Server Management Studio:

Nou die bovenste wil ik wél, maar die onderste dus mooi niet.
Als ik nu in Visual Studio de Stored Procedure toevoeg aan mijn dataset krijg ik het volgende te zien:

Nou is dat dus niet de bedoeling, want ik wil wel mijn return_value terug krijgen
Als ik gewoon een query inklop (dus zonder dat ik daarna een exec in de procedure doe) dan werkt het allemaal prima, dus daar zit volgens mij de fout. Moet ik daar extra parameters aan meegeven o.i.d.?
