[ASP & SQL] Stored procedure probleem

Pagina: 1
Acties:

  • ronjon
  • Registratie: Oktober 2001
  • Laatst online: 13-08 21:18
Ik heb een stored procedure gemaakt:
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?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
Hoi:

whoami in "ASP SQL stored procedure probleem"

Trouwens tip: dynamic sql, sp_executesql etc....

[ Voor 8% gewijzigd door whoami op 11-07-2003 13:06 ]

https://fgheysels.github.io/


  • ronjon
  • Registratie: Oktober 2001
  • Laatst online: 13-08 21:18
Hoi

ik heb alles al geprobeert, ben nu bezig met SQL Query Analyzer om de boel te parsen, en na twee dagen heb ik het eindelijk voor elkaar. Alleen die laatste melding krijg ik er dus niet uit. Vandaar ook mijn post.
Het is dus geen kwestie van lap code posten en wachten op antwoord.

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Nee? Wat is het dan?
Wat heb je geprobeerd? Heb je de fout kunnen isoleren? Is je hele stuk code relevant of maar één a twee zinnen? Heb je wat op internet gevonden wat niet hielp?

Kortom allemaal dingen die we nodig hebben voordat we de eerste 20 reply's gaan moeten gokken.

  • ronjon
  • Registratie: Oktober 2001
  • Laatst online: 13-08 21:18
de fout is dus dat van de waarde @sSql een variable wordt gemaakt, terwijl het eigenlijk mij query zou moeten zijn.
Ik zit met help-files voor mijn neus, op internet te zoeken, 2 dagen bezig, etc.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
WAT heb je al geprobeerd, wat heb je gezocht etc.... Iedereen kan dat zeggen.

Check verder ook eens mijn tips in mijn eerste post in dit topic.

https://fgheysels.github.io/


  • ronjon
  • Registratie: Oktober 2001
  • Laatst online: 13-08 21:18
Ben er al uit, met dank aan whoami:

eerst @sSql declareren als nvarchar en daarna:
execute sp_executesql @sSql

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
Met EXEC of EXECUTE moet het trouwens ook werken. Je moet dan echter wel zorgen dat je haakjes gebruikt:

code:
1
2
EXEC ('SELECT * FROM categories')
EXECUTE ('SELECT * FROM categories')

https://fgheysels.github.io/

Pagina: 1