Ik heb een stored procedure gemaakt:
bij het testen met de volgende waarden zou ik een entry moeten krijgen uit mijn database:
maar ik krijg een foutmelding dat mijn query een variable is geworden:
Server: Msg 203, Level 16, State 2, Procedure search, Line 76
[Microsoft][ODBC SQL Server Driver][SQL Server]The name 'SELECT * FROM object WHERE object_categorie = 1 AND object_koop = 'koop' AND object_bouw = 'bestaand' AND object_prijs > 0 AND object_plaats = 5 ' is not a valid identifier.
hoe maak ik mijn procedure zo dat ie uit gevoerd wordt?
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
| CREATE PROCEDURE dbo.search
@category varchar(255),
@sales varchar(255),
@build varchar(255),
@price varchar(255),
@place varchar(255)
AS
DECLARE @teller int
DECLARE @sqlTmp varchar(1000)
SELECT @sqlTmp = ""
SELECT @teller = 0
If @category <> 'all'
SELECT @teller = @teller + 1
IF @teller = 1
begin
PRINT 'teller = '
SELECT @sqlTmp = @sqlTmp + "WHERE object_categorie = " + @category + " "
end
ELSE
begin
PRINT 'teller>1' + @teller
SELECT @sqlTmp = @sqlTmp + "AND object_categorie = " + @category + " "
end
If @sales <> 'all'
SELECT @teller = @teller + 1
If @teller = 1
begin
SELECT @sqlTmp = @sqlTmp + "WHERE object_koop = " + "'" + @sales + "'" + " "
end
else
begin
SELECT @sqlTmp = @sqlTmp + "AND object_koop = " + "'" + @sales+ "'" + " "
end
If @build <> 'all'
SELECT @teller = @teller + 1
If @teller = 1
begin
SELECT @sqlTmp = @sqlTmp + "WHERE object_bouw = " + "'" + @build + "'" + " "
end
else
begin
SELECT @sqlTmp = @sqlTmp + "AND object_bouw = " + "'" + @build + "'" + " "
end
If @price <> ''
begin
SELECT @sqlTmp = @sqlTmp + "AND object_prijs > 0 "
end
If @place <> 'all'
SELECT @teller = @teller + 1
If @teller = 1
begin
SELECT @sqlTmp = @sqlTmp + "WHERE object_plaats = " + @place + " "
end
else
begin
SELECT @sqlTmp = @sqlTmp + "AND object_plaats = " + @place + " "
end
PRINT @sqlTmp
DECLARE @sSql varchar(255)
SELECT @sSql = "SELECT * FROM object "
SELECT @sSql = @sSql + @sqlTmp
/*
PRINT @sSql
PRINT Left(@sSql,Len(@sSql)-1)
EXEC @sSql
*/
SELECT @sSql
EXEC @sSql
GO |
bij het testen met de volgende waarden zou ik een entry moeten krijgen uit mijn database:
code:
1
2
3
4
5
| category = "1" sales = "koop" build = "bestaand" priceoff = "10" place = "5" |
maar ik krijg een foutmelding dat mijn query een variable is geworden:
Server: Msg 203, Level 16, State 2, Procedure search, Line 76
[Microsoft][ODBC SQL Server Driver][SQL Server]The name 'SELECT * FROM object WHERE object_categorie = 1 AND object_koop = 'koop' AND object_bouw = 'bestaand' AND object_prijs > 0 AND object_plaats = 5 ' is not a valid identifier.
hoe maak ik mijn procedure zo dat ie uit gevoerd wordt?