Procédure stocké SQL server

Procédure stocké SQL server - SQL/NoSQL - Programmation

Marsh Posté le 12-02-2003 à 18:12:18    

je fais une prodécure stockée et il me met une erreur je ne vois pas pourquoi , quelqu un peut il m'aider ?
 

BEGIN
 
    SET @SQL= 'UPDATE ' + @TableName +  
      ' SET ' + @ColumnName  
      + ' =  REPLACE(' + @ColumnName + ', '  
      + QUOTENAME(@SearchStr, '''') + ', ' + QUOTENAME(@ReplaceStr, '''') +  
      ') WHERE Id_Site='+ @Id_site +'  AND ' + @ColumnName + ' LIKE ' + @SearchStr2  
    EXEC (@SQL)
       END


 
Error converting data type nvarchar to bigint.
 
C'est le champ Id_site qui est bigInt... pourtant j ai bien le bon parametre.. et il est déclaré.. je comprend pas.

Reply

Marsh Posté le 12-02-2003 à 18:12:18   

Reply

Marsh Posté le 12-02-2003 à 19:19:00    

ben pasque t'as mis des quotes :sarcastic:
 
/me a dit une betise


Message édité par HappyHarry le 12-02-2003 à 19:21:42
Reply

Marsh Posté le 12-02-2003 à 19:20:01    

ben c'est une chaine que je construit.. j'ai pas le choix..
comment tu fais ?

Reply

Marsh Posté le 12-02-2003 à 19:22:01    

fais voir la procédure en entier

Reply

Marsh Posté le 12-02-2003 à 19:26:08    

CREATE PROC SP_SearchAndReplace
(
 @SearchStr nvarchar(100),
 @ReplaceStr nvarchar(100),
 @NomTable nvarchar(100),
 @NomColonne nvarchar(100),
 @Id_Site bigint
)
AS
BEGIN
 
 
 SET NOCOUNT ON
 
 DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110), @SQL nvarchar(4000), @RCTR int
 SET  @TableName = @NomTable
 SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')
 SET @RCTR = 0
 SET  @ColumnName = @NomColonne
 
   BEGIN
 
    SET @SQL= 'UPDATE ' + @TableName +  
      ' SET ' + @ColumnName  
      + ' =  REPLACE(' + @ColumnName + ', '  
      + QUOTENAME(@SearchStr, '''') + ', ' + QUOTENAME(@ReplaceStr, '''') +  
      ') WHERE Id_Site=' + @Id_Site + ' AND ' + @ColumnName + ' LIKE ' + @SearchStr2  
    EXEC (@SQL)
       END
 
END
GO


 
 
J'ai corrigé ma procédure comme suit et ca , ca fonctionne..
mais je trouve ca un peu barbare..
 

CREATE PROC SP_SearchAndReplace
(
 @SearchStr nvarchar(100),
 @ReplaceStr nvarchar(100),
 @NomTable nvarchar(100),
 @NomColonne nvarchar(100),
 @Id_Site bigint
)
AS
BEGIN
 
 
 SET NOCOUNT ON
 
 DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110), @SQL nvarchar(4000), @RCTR int
 SET  @TableName = @NomTable
 SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')
 SET @RCTR = 0
 SET  @ColumnName = @NomColonne
 
   BEGIN
 
    SET @SQL= 'UPDATE ' + @TableName +  
      ' SET ' + @ColumnName  
      + ' =  REPLACE(' + @ColumnName + ', '  
      + QUOTENAME(@SearchStr, '''') + ', ' + QUOTENAME(@ReplaceStr, '''') +  
      ') WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2  
    EXEC (@SQL + ' AND ID_Site=' + @Id_Site)
       END
 
END
GO

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed