[SQL] Stored procedure

Pagina: 1
Acties:

  • Morpheus_at_work
  • Registratie: December 2000
  • Laatst online: 00:01
code:
1
2
3
4
5
6
7
8
9
10
CREATE PROCEDURE sp_cms_update_reviewtitelcategorie
    @ReviewID           Int,
    @ReviewType     Char(1),
    @ReviewTitel            Varchar(50)
AS

Update Review 
Set ReviewType =@ReviewType,ReviewTitel =@ReviewTitel
WHERE ReviewID =@ReviewID
GO


deze spreek ik met met asp jscript aan
als volgt

code:
1
strupdateprimairy = "sp_cms_Update_ReviewTitelCategorie "+reviewid+","+categorie+","+titel+"";


code:
1
strupdateprimairy = "sp_cms_Update_ReviewTitelCategorie 1,T,Test";


dit gaat goed

code:
1
strupdateprimairy = "strupdateprimairy = "sp_cms_Update_ReviewTitelCategorie 1,T,Test   1";



het gaat fout zodra er een spatie inzit , dit is voor het eerst dat ik dit krijgt met een stored procedure , heb er nou 24 gemaakt , maar snap dit even niet


de veldproperties van de tabel zijn

ReviewType = char aantal karakters 1
ReviewTitel = varchar aantal karakters 50
ReviewID = integer


ik krijg de foutmelding

code:
1
Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near 'Test'.

Canon R6 MARK III, 35mm 1.4 VCM, 50mm 1.4 VCM , 85mm 1.4 VCM , 17-35mm 1.8, 28-70 1.8 , 24-105 1.8 70-200 f2.8


  • Morpheus_at_work
  • Registratie: December 2000
  • Laatst online: 00:01
ships ik ben dom geweest :(

[code]

strupdateprimairy = "sp_cms_Update_ReviewTitelCategorie "+reviewid+","+categorie+",'"+titel+"'";

[code]

moet je dan toch bij char en varchar altijd ' ' blijven gebruiken , want had er bv bij een text veld geen last van

Canon R6 MARK III, 35mm 1.4 VCM, 50mm 1.4 VCM , 85mm 1.4 VCM , 17-35mm 1.8, 28-70 1.8 , 24-105 1.8 70-200 f2.8


  • whoami
  • Registratie: December 2000
  • Laatst online: 20:46
Bij char, varchar, text, .... (kortom alle niet-numerieke velden) gebruik je idd best quotes. Het lukt misschien wel zonder quotes, maar van zodra er spaties ed. in komen, dan heb je het zitten.

https://fgheysels.github.io/


  • Vaudtje
  • Registratie: April 2002
  • Niet online
Heb weinig/geen kennis van ASP, don't shoot me
Is het niet mogelijk om met parameters te werken? (Parameterized query, of hoe dat dan ook heet... :o )
Dus ipv. een string als SQL executen een Query object maken (java-a-like syntax >:) ):
code:
1
2
3
4
5
6
//GEEN ECHTE CODE
qryUpdate = new Query("sp_cms_Update_ReviewTitelCategorie ?,?,?");
qryUpdate.setParameters(1, "1");
qryUpdate.setParameters(1, "T");
qryUpdate.setParameters(1, "Test      1");
result = qryUpdate.execute();

Dan heb je ook geen probleem als een van je reviewtitels ";DROP DATABASE go" is :Y)

offtopic:
"primary" heeft volgens mij altijd maar een i

[ Voor 8% gewijzigd door Vaudtje op 26-11-2002 10:03 . Reden: +e ]

In deeze zin staan drie fauten


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Test ook even met een quote in de titel. Misschien beëindig je dan wel onbedoeld de string en krijg je nog steeds een syntax-error

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:46
Goodielover schreef op 26 November 2002 @ 09:40:
Test ook even met een quote in de titel. Misschien beëindig je dan wel onbedoeld de string en krijg je nog steeds een syntax-error


Daarom is het het best om, zoals Vaudtje zegt, om met parameters te werken.
Dan wordt daar automatisch rekening mee gehouden.

Hoe je dat precies in ASP doet, weet ik niet, maar ik denk wel dat het mogelijk moet zijn.

https://fgheysels.github.io/


Verwijderd

Met VB werkt het in asp als volgt:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim cn, rs, teller, cmd, rsrowcount

Set cn = Server.CreateObject("ADODB.Connection")
cn.CursorLocation= adUseClient

cn.Open Session("ConnectionString")
Set rs = Server.CreateObject("ADODB.Recordset")
Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = cn
cmd.CommandText = "mgs_sent"
cmd.CommandType = adCmdStoredProc

set rsrowcount = cmd.CreateParameter("rowcount", adInteger, adParamReturnValue)
cmd.Parameters.Append rsrowcount

cmd.Parameters.Append cmd.CreateParameter("customer", adChar, adParamInput, 75, Session("UserName"))

rs.Open cmd.Execute

  • Morpheus_at_work
  • Registratie: December 2000
  • Laatst online: 00:01
probleem met quote had ik al afgetikt want werk met een replace die alle tekens die de database niet lief vindt eruit filtert , ik heb het even nagezocht alleen var en varchar hebben ' ' nodig , tekst niet :)

[ Voor 4% gewijzigd door Morpheus_at_work op 26-11-2002 11:23 ]

Canon R6 MARK III, 35mm 1.4 VCM, 50mm 1.4 VCM , 85mm 1.4 VCM , 17-35mm 1.8, 28-70 1.8 , 24-105 1.8 70-200 f2.8

Pagina: 1