Bonjour à tous
Voici mon problème :
J'ai une procédure stockée qui contient tout le code nécessaire pour
effectuer une analyse croisée
voici le code (merci à l'auteur):
************************************************************
CREATE PROCEDURE sp_CROSSTAB
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + '
WHERE
1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' + @table
+
' WHERE '
+ @pivot + ' Is Not Null')
SELECT @sql='' , @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )
SELECT @delimÊSE Sign( CharIndex('char', data_type)+CharIndex('date',
data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'
SELECT @sql=@sql + '''' + convert(varchar(100), pivot) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + ' WHEN
'
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', '
FROM
##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', ' +
@sql
+ ' ')
EXEC (@select)
SET ANSI_WARNINGS ON
GO
************************************************************
Cette procédure est appellée (avec tous les paramètres nécessaires) par
une
autre procédure stockée (disons P2).
Lorsque j'exécute P2 via l'analyseur de requête SQL, j'obtiens bien le
résultat attendu retourné par sp_CROSSTAB.
Par contre, lorsque je demande l'exécution de P2 par VB .NET ou c#, j'ai
une
erreur dans sp_CROSSTAB à la ligne 18 (syntaxe incorrecte vers le mot clé
'END')
J'ai essayé en redirigant la sortie vers une table (INTO xxx FROM ...)
mais
cela ne fonctionne aussi qu'avec l'analyseur, pas via un programme.
Une piste, une solution ??????
Aloha, 2nis
Bonjour à tous
Voici mon problème :
J'ai une procédure stockée qui contient tout le code nécessaire pour
effectuer une analyse croisée
voici le code (merci à l'auteur):
************************************************************
CREATE PROCEDURE sp_CROSSTAB
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + '
WHERE
1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' + @table
+
' WHERE '
+ @pivot + ' Is Not Null')
SELECT @sql='' , @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )
SELECT @delimÊSE Sign( CharIndex('char', data_type)+CharIndex('date',
data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'
SELECT @sql=@sql + '''' + convert(varchar(100), pivot) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + ' WHEN
'
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', '
FROM
##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', ' +
@sql
+ ' ')
EXEC (@select)
SET ANSI_WARNINGS ON
GO
************************************************************
Cette procédure est appellée (avec tous les paramètres nécessaires) par
une
autre procédure stockée (disons P2).
Lorsque j'exécute P2 via l'analyseur de requête SQL, j'obtiens bien le
résultat attendu retourné par sp_CROSSTAB.
Par contre, lorsque je demande l'exécution de P2 par VB .NET ou c#, j'ai
une
erreur dans sp_CROSSTAB à la ligne 18 (syntaxe incorrecte vers le mot clé
'END')
J'ai essayé en redirigant la sortie vers une table (INTO xxx FROM ...)
mais
cela ne fonctionne aussi qu'avec l'analyseur, pas via un programme.
Une piste, une solution ??????
Aloha, 2nis
Bonjour à tous
Voici mon problème :
J'ai une procédure stockée qui contient tout le code nécessaire pour
effectuer une analyse croisée
voici le code (merci à l'auteur):
************************************************************
CREATE PROCEDURE sp_CROSSTAB
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + '
WHERE
1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' + @table
+
' WHERE '
+ @pivot + ' Is Not Null')
SELECT @sql='' , @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )
SELECT @delimÊSE Sign( CharIndex('char', data_type)+CharIndex('date',
data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'
SELECT @sql=@sql + '''' + convert(varchar(100), pivot) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + ' WHEN
'
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', '
FROM
##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', ' +
@sql
+ ' ')
EXEC (@select)
SET ANSI_WARNINGS ON
GO
************************************************************
Cette procédure est appellée (avec tous les paramètres nécessaires) par
une
autre procédure stockée (disons P2).
Lorsque j'exécute P2 via l'analyseur de requête SQL, j'obtiens bien le
résultat attendu retourné par sp_CROSSTAB.
Par contre, lorsque je demande l'exécution de P2 par VB .NET ou c#, j'ai
une
erreur dans sp_CROSSTAB à la ligne 18 (syntaxe incorrecte vers le mot clé
'END')
J'ai essayé en redirigant la sortie vers une table (INTO xxx FROM ...)
mais
cela ne fonctionne aussi qu'avec l'analyseur, pas via un programme.
Une piste, une solution ??????
Aloha, 2nis
Bonjour à tous
Voici mon problème :
J'ai une procédure stockée qui contient tout le code nécessaire pour
effectuer une analyse croisée
voici le code (merci à l'auteur):
************************************************************
CREATE PROCEDURE sp_CROSSTAB
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + ' WHERE
1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' + @table +
' WHERE '
+ @pivot + ' Is Not Null')
SELECT @sql='' , @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )
SELECT @delimÊSE Sign( CharIndex('char', data_type)+CharIndex('date',
data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'
SELECT @sql=@sql + '''' + convert(varchar(100), pivot) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + ' WHEN '
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', ' FROM
##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', ' + @sql
+ ' ')
EXEC (@select)
SET ANSI_WARNINGS ON
GO
************************************************************
Cette procédure est appellée (avec tous les paramètres nécessaires) par une
autre procédure stockée (disons P2).
Lorsque j'exécute P2 via l'analyseur de requête SQL, j'obtiens bien le
résultat attendu retourné par sp_CROSSTAB.
Par contre, lorsque je demande l'exécution de P2 par VB .NET ou c#, j'ai une
erreur dans sp_CROSSTAB à la ligne 18 (syntaxe incorrecte vers le mot clé
'END')
J'ai essayé en redirigant la sortie vers une table (INTO xxx FROM ...) mais
cela ne fonctionne aussi qu'avec l'analyseur, pas via un programme.
Une piste, une solution ??????
Aloha, 2nis
Bonjour à tous
Voici mon problème :
J'ai une procédure stockée qui contient tout le code nécessaire pour
effectuer une analyse croisée
voici le code (merci à l'auteur):
************************************************************
CREATE PROCEDURE sp_CROSSTAB
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + ' WHERE
1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' + @table +
' WHERE '
+ @pivot + ' Is Not Null')
SELECT @sql='' , @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )
SELECT @delimÊSE Sign( CharIndex('char', data_type)+CharIndex('date',
data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'
SELECT @sql=@sql + '''' + convert(varchar(100), pivot) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + ' WHEN '
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', ' FROM
##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', ' + @sql
+ ' ')
EXEC (@select)
SET ANSI_WARNINGS ON
GO
************************************************************
Cette procédure est appellée (avec tous les paramètres nécessaires) par une
autre procédure stockée (disons P2).
Lorsque j'exécute P2 via l'analyseur de requête SQL, j'obtiens bien le
résultat attendu retourné par sp_CROSSTAB.
Par contre, lorsque je demande l'exécution de P2 par VB .NET ou c#, j'ai une
erreur dans sp_CROSSTAB à la ligne 18 (syntaxe incorrecte vers le mot clé
'END')
J'ai essayé en redirigant la sortie vers une table (INTO xxx FROM ...) mais
cela ne fonctionne aussi qu'avec l'analyseur, pas via un programme.
Une piste, une solution ??????
Aloha, 2nis
Bonjour à tous
Voici mon problème :
J'ai une procédure stockée qui contient tout le code nécessaire pour
effectuer une analyse croisée
voici le code (merci à l'auteur):
************************************************************
CREATE PROCEDURE sp_CROSSTAB
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + ' WHERE
1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' + @table +
' WHERE '
+ @pivot + ' Is Not Null')
SELECT @sql='' , @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )
SELECT @delimÊSE Sign( CharIndex('char', data_type)+CharIndex('date',
data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'
SELECT @sql=@sql + '''' + convert(varchar(100), pivot) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + ' WHEN '
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', ' FROM
##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', ' + @sql
+ ' ')
EXEC (@select)
SET ANSI_WARNINGS ON
GO
************************************************************
Cette procédure est appellée (avec tous les paramètres nécessaires) par une
autre procédure stockée (disons P2).
Lorsque j'exécute P2 via l'analyseur de requête SQL, j'obtiens bien le
résultat attendu retourné par sp_CROSSTAB.
Par contre, lorsque je demande l'exécution de P2 par VB .NET ou c#, j'ai une
erreur dans sp_CROSSTAB à la ligne 18 (syntaxe incorrecte vers le mot clé
'END')
J'ai essayé en redirigant la sortie vers une table (INTO xxx FROM ...) mais
cela ne fonctionne aussi qu'avec l'analyseur, pas via un programme.
Une piste, une solution ??????
Aloha, 2nis
Bonjour à tous
Voici mon problème :
J'ai une procédure stockée qui contient tout le code nécessaire pour
effectuer une analyse croisée
voici le code (merci à l'auteur):
************************************************************
CREATE PROCEDURE sp_CROSSTAB
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + ' WHERE
1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' + @table +
' WHERE '
+ @pivot + ' Is Not Null')
SELECT @sql='' , @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )
SELECT @delimÊSE Sign( CharIndex('char', data_type)+CharIndex('date',
data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'
SELECT @sql=@sql + '''' + convert(varchar(100), pivot) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + ' WHEN '
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', ' FROM
##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', ' + @sql
+ ' ')
EXEC (@select)
SET ANSI_WARNINGS ON
GO
************************************************************
Cette procédure est appellée (avec tous les paramètres nécessaires) par une
autre procédure stockée (disons P2).
Lorsque j'exécute P2 via l'analyseur de requête SQL, j'obtiens bien le
résultat attendu retourné par sp_CROSSTAB.
Par contre, lorsque je demande l'exécution de P2 par VB .NET ou c#, j'ai une
erreur dans sp_CROSSTAB à la ligne 18 (syntaxe incorrecte vers le mot clé
'END')
J'ai essayé en redirigant la sortie vers une table (INTO xxx FROM ...) mais
cela ne fonctionne aussi qu'avec l'analyseur, pas via un programme.
Une piste, une solution ??????
Aloha, 2nis
Bonjour à tous
Voici mon problème :
J'ai une procédure stockée qui contient tout le code nécessaire pour
effectuer une analyse croisée
voici le code (merci à l'auteur):
************************************************************
CREATE PROCEDURE sp_CROSSTAB
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + ' WHERE
1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' + @table +
' WHERE '
+ @pivot + ' Is Not Null')
SELECT @sql='' , @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )
SELECT @delimÊSE Sign( CharIndex('char', data_type)+CharIndex('date',
data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'
SELECT @sql=@sql + '''' + convert(varchar(100), pivot) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + ' WHEN '
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', ' FROM
##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', ' + @sql
+ ' ')
EXEC (@select)
SET ANSI_WARNINGS ON
GO
************************************************************
Cette procédure est appellée (avec tous les paramètres nécessaires) par une
autre procédure stockée (disons P2).
Lorsque j'exécute P2 via l'analyseur de requête SQL, j'obtiens bien le
résultat attendu retourné par sp_CROSSTAB.
Par contre, lorsque je demande l'exécution de P2 par VB .NET ou c#, j'ai une
erreur dans sp_CROSSTAB à la ligne 18 (syntaxe incorrecte vers le mot clé
'END')
J'ai essayé en redirigant la sortie vers une table (INTO xxx FROM ...) mais
cela ne fonctionne aussi qu'avec l'analyseur, pas via un programme.
Une piste, une solution ??????
Aloha, 2nis
Bonjour à tous
Voici mon problème :
J'ai une procédure stockée qui contient tout le code nécessaire pour
effectuer une analyse croisée
voici le code (merci à l'auteur):
************************************************************
CREATE PROCEDURE sp_CROSSTAB
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + ' WHERE
1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' + @table +
' WHERE '
+ @pivot + ' Is Not Null')
SELECT @sql='' , @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )
SELECT @delimÊSE Sign( CharIndex('char', data_type)+CharIndex('date',
data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'
SELECT @sql=@sql + '''' + convert(varchar(100), pivot) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + ' WHEN '
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', ' FROM
##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', ' + @sql
+ ' ')
EXEC (@select)
SET ANSI_WARNINGS ON
GO
************************************************************
Cette procédure est appellée (avec tous les paramètres nécessaires) par une
autre procédure stockée (disons P2).
Lorsque j'exécute P2 via l'analyseur de requête SQL, j'obtiens bien le
résultat attendu retourné par sp_CROSSTAB.
Par contre, lorsque je demande l'exécution de P2 par VB .NET ou c#, j'ai une
erreur dans sp_CROSSTAB à la ligne 18 (syntaxe incorrecte vers le mot clé
'END')
J'ai essayé en redirigant la sortie vers une table (INTO xxx FROM ...) mais
cela ne fonctionne aussi qu'avec l'analyseur, pas via un programme.
Une piste, une solution ??????
Aloha, 2nis
Bonjour à tous
Voici mon problème :
J'ai une procédure stockée qui contient tout le code nécessaire pour
effectuer une analyse croisée
voici le code (merci à l'auteur):
************************************************************
CREATE PROCEDURE sp_CROSSTAB
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + ' WHERE
1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' + @table +
' WHERE '
+ @pivot + ' Is Not Null')
SELECT @sql='' , @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )
SELECT @delimÊSE Sign( CharIndex('char', data_type)+CharIndex('date',
data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'
SELECT @sql=@sql + '''' + convert(varchar(100), pivot) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + ' WHEN '
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', ' FROM
##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', ' + @sql
+ ' ')
EXEC (@select)
SET ANSI_WARNINGS ON
GO
************************************************************
Cette procédure est appellée (avec tous les paramètres nécessaires) par une
autre procédure stockée (disons P2).
Lorsque j'exécute P2 via l'analyseur de requête SQL, j'obtiens bien le
résultat attendu retourné par sp_CROSSTAB.
Par contre, lorsque je demande l'exécution de P2 par VB .NET ou c#, j'ai une
erreur dans sp_CROSSTAB à la ligne 18 (syntaxe incorrecte vers le mot clé
'END')
J'ai essayé en redirigant la sortie vers une table (INTO xxx FROM ...) mais
cela ne fonctionne aussi qu'avec l'analyseur, pas via un programme.
Une piste, une solution ??????
Aloha, 2nis
Bonjour à tous
Voici mon problème :
J'ai une procédure stockée qui contient tout le code nécessaire pour
effectuer une analyse croisée
voici le code (merci à l'auteur):
************************************************************
CREATE PROCEDURE sp_CROSSTAB
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + ' WHERE
1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' + @table +
' WHERE '
+ @pivot + ' Is Not Null')
SELECT @sql='' , @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )
SELECT @delimÊSE Sign( CharIndex('char', data_type)+CharIndex('date',
data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'
SELECT @sql=@sql + '''' + convert(varchar(100), pivot) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + ' WHEN '
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', ' FROM
##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', ' + @sql
+ ' ')
EXEC (@select)
SET ANSI_WARNINGS ON
GO
************************************************************
Cette procédure est appellée (avec tous les paramètres nécessaires) par une
autre procédure stockée (disons P2).
Lorsque j'exécute P2 via l'analyseur de requête SQL, j'obtiens bien le
résultat attendu retourné par sp_CROSSTAB.
Par contre, lorsque je demande l'exécution de P2 par VB .NET ou c#, j'ai une
erreur dans sp_CROSSTAB à la ligne 18 (syntaxe incorrecte vers le mot clé
'END')
J'ai essayé en redirigant la sortie vers une table (INTO xxx FROM ...) mais
cela ne fonctionne aussi qu'avec l'analyseur, pas via un programme.
Une piste, une solution ??????
Aloha, 2nis
Bonjour à tous
Voici mon problème :
J'ai une procédure stockée qui contient tout le code nécessaire pour
effectuer une analyse croisée
voici le code (merci à l'auteur):
************************************************************
CREATE PROCEDURE sp_CROSSTAB
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + ' WHERE
1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' + @table +
' WHERE '
+ @pivot + ' Is Not Null')
SELECT @sql='' , @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )
SELECT @delimÊSE Sign( CharIndex('char', data_type)+CharIndex('date',
data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'
SELECT @sql=@sql + '''' + convert(varchar(100), pivot) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + ' WHEN '
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', ' FROM
##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', ' + @sql
+ ' ')
EXEC (@select)
SET ANSI_WARNINGS ON
GO
************************************************************
Cette procédure est appellée (avec tous les paramètres nécessaires) par une
autre procédure stockée (disons P2).
Lorsque j'exécute P2 via l'analyseur de requête SQL, j'obtiens bien le
résultat attendu retourné par sp_CROSSTAB.
Par contre, lorsque je demande l'exécution de P2 par VB .NET ou c#, j'ai une
erreur dans sp_CROSSTAB à la ligne 18 (syntaxe incorrecte vers le mot clé
'END')
J'ai essayé en redirigant la sortie vers une table (INTO xxx FROM ...) mais
cela ne fonctionne aussi qu'avec l'analyseur, pas via un programme.
Une piste, une solution ??????
Aloha, 2nis
Bonjour à tous
Voici mon problème :
J'ai une procédure stockée qui contient tout le code nécessaire pour
effectuer une analyse croisée
voici le code (merci à l'auteur):
************************************************************
CREATE PROCEDURE sp_CROSSTAB
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + ' WHERE
1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' + @table +
' WHERE '
+ @pivot + ' Is Not Null')
SELECT @sql='' , @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )
SELECT @delimÊSE Sign( CharIndex('char', data_type)+CharIndex('date',
data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'
SELECT @sql=@sql + '''' + convert(varchar(100), pivot) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + ' WHEN '
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', ' FROM
##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', ' + @sql
+ ' ')
EXEC (@select)
SET ANSI_WARNINGS ON
GO
************************************************************
Cette procédure est appellée (avec tous les paramètres nécessaires) par une
autre procédure stockée (disons P2).
Lorsque j'exécute P2 via l'analyseur de requête SQL, j'obtiens bien le
résultat attendu retourné par sp_CROSSTAB.
Par contre, lorsque je demande l'exécution de P2 par VB .NET ou c#, j'ai une
erreur dans sp_CROSSTAB à la ligne 18 (syntaxe incorrecte vers le mot clé
'END')
J'ai essayé en redirigant la sortie vers une table (INTO xxx FROM ...) mais
cela ne fonctionne aussi qu'avec l'analyseur, pas via un programme.
Une piste, une solution ??????
Aloha, 2nis
Bonjour à tous
Voici mon problème :
J'ai une procédure stockée qui contient tout le code nécessaire pour
effectuer une analyse croisée
voici le code (merci à l'auteur):
************************************************************
CREATE PROCEDURE sp_CROSSTAB
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + ' WHERE
1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' + @table +
' WHERE '
+ @pivot + ' Is Not Null')
SELECT @sql='' , @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )
SELECT @delimÊSE Sign( CharIndex('char', data_type)+CharIndex('date',
data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'
SELECT @sql=@sql + '''' + convert(varchar(100), pivot) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + ' WHEN '
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', ' FROM
##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', ' + @sql
+ ' ')
EXEC (@select)
SET ANSI_WARNINGS ON
GO
************************************************************
Cette procédure est appellée (avec tous les paramètres nécessaires) par une
autre procédure stockée (disons P2).
Lorsque j'exécute P2 via l'analyseur de requête SQL, j'obtiens bien le
résultat attendu retourné par sp_CROSSTAB.
Par contre, lorsque je demande l'exécution de P2 par VB .NET ou c#, j'ai une
erreur dans sp_CROSSTAB à la ligne 18 (syntaxe incorrecte vers le mot clé
'END')
J'ai essayé en redirigant la sortie vers une table (INTO xxx FROM ...) mais
cela ne fonctionne aussi qu'avec l'analyseur, pas via un programme.
Une piste, une solution ??????
Aloha, 2nis
Bonjour à tous
Voici mon problème :
J'ai une procédure stockée qui contient tout le code nécessaire pour
effectuer une analyse croisée
voici le code (merci à l'auteur):
************************************************************
CREATE PROCEDURE sp_CROSSTAB
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + ' WHERE
1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' + @table +
' WHERE '
+ @pivot + ' Is Not Null')
SELECT @sql='' , @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )
SELECT @delimÊSE Sign( CharIndex('char', data_type)+CharIndex('date',
data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'
SELECT @sql=@sql + '''' + convert(varchar(100), pivot) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + ' WHEN '
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', ' FROM
##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', ' + @sql
+ ' ')
EXEC (@select)
SET ANSI_WARNINGS ON
GO
************************************************************
Cette procédure est appellée (avec tous les paramètres nécessaires) par une
autre procédure stockée (disons P2).
Lorsque j'exécute P2 via l'analyseur de requête SQL, j'obtiens bien le
résultat attendu retourné par sp_CROSSTAB.
Par contre, lorsque je demande l'exécution de P2 par VB .NET ou c#, j'ai une
erreur dans sp_CROSSTAB à la ligne 18 (syntaxe incorrecte vers le mot clé
'END')
J'ai essayé en redirigant la sortie vers une table (INTO xxx FROM ...) mais
cela ne fonctionne aussi qu'avec l'analyseur, pas via un programme.
Une piste, une solution ??????
Aloha, 2nis
Bonjour à tous
Voici mon problème :
J'ai une procédure stockée qui contient tout le code nécessaire pour
effectuer une analyse croisée
voici le code (merci à l'auteur):
************************************************************
CREATE PROCEDURE sp_CROSSTAB
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + ' WHERE
1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' + @table +
' WHERE '
+ @pivot + ' Is Not Null')
SELECT @sql='' , @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )
SELECT @delimÊSE Sign( CharIndex('char', data_type)+CharIndex('date',
data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'
SELECT @sql=@sql + '''' + convert(varchar(100), pivot) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + ' WHEN '
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', ' FROM
##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', ' + @sql
+ ' ')
EXEC (@select)
SET ANSI_WARNINGS ON
GO
************************************************************
Cette procédure est appellée (avec tous les paramètres nécessaires) par une
autre procédure stockée (disons P2).
Lorsque j'exécute P2 via l'analyseur de requête SQL, j'obtiens bien le
résultat attendu retourné par sp_CROSSTAB.
Par contre, lorsque je demande l'exécution de P2 par VB .NET ou c#, j'ai une
erreur dans sp_CROSSTAB à la ligne 18 (syntaxe incorrecte vers le mot clé
'END')
J'ai essayé en redirigant la sortie vers une table (INTO xxx FROM ...) mais
cela ne fonctionne aussi qu'avec l'analyseur, pas via un programme.
Une piste, une solution ??????
Aloha, 2nis
Bonjour à tous
Voici mon problème :
J'ai une procédure stockée qui contient tout le code nécessaire pour
effectuer une analyse croisée
voici le code (merci à l'auteur):
************************************************************
CREATE PROCEDURE sp_CROSSTAB
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + ' WHERE
1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' + @table +
' WHERE '
+ @pivot + ' Is Not Null')
SELECT @sql='' , @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )
SELECT @delimÊSE Sign( CharIndex('char', data_type)+CharIndex('date',
data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'
SELECT @sql=@sql + '''' + convert(varchar(100), pivot) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + ' WHEN '
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', ' FROM
##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', ' + @sql
+ ' ')
EXEC (@select)
SET ANSI_WARNINGS ON
GO
************************************************************
Cette procédure est appellée (avec tous les paramètres nécessaires) par une
autre procédure stockée (disons P2).
Lorsque j'exécute P2 via l'analyseur de requête SQL, j'obtiens bien le
résultat attendu retourné par sp_CROSSTAB.
Par contre, lorsque je demande l'exécution de P2 par VB .NET ou c#, j'ai une
erreur dans sp_CROSSTAB à la ligne 18 (syntaxe incorrecte vers le mot clé
'END')
J'ai essayé en redirigant la sortie vers une table (INTO xxx FROM ...) mais
cela ne fonctionne aussi qu'avec l'analyseur, pas via un programme.
Une piste, une solution ??????
Aloha, 2nis
Bonjour à tous
Voici mon problème :
J'ai une procédure stockée qui contient tout le code nécessaire pour
effectuer une analyse croisée
voici le code (merci à l'auteur):
************************************************************
CREATE PROCEDURE sp_CROSSTAB
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS
DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + ' WHERE
1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' + @table +
' WHERE '
+ @pivot + ' Is Not Null')
SELECT @sql='' , @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )
SELECT @delimÊSE Sign( CharIndex('char', data_type)+CharIndex('date',
data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'
SELECT @sql=@sql + '''' + convert(varchar(100), pivot) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + ' WHEN '
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', ' FROM
##pivot
DROP TABLE ##pivot
SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', ' + @sql
+ ' ')
EXEC (@select)
SET ANSI_WARNINGS ON
GO
************************************************************
Cette procédure est appellée (avec tous les paramètres nécessaires) par une
autre procédure stockée (disons P2).
Lorsque j'exécute P2 via l'analyseur de requête SQL, j'obtiens bien le
résultat attendu retourné par sp_CROSSTAB.
Par contre, lorsque je demande l'exécution de P2 par VB .NET ou c#, j'ai une
erreur dans sp_CROSSTAB à la ligne 18 (syntaxe incorrecte vers le mot clé
'END')
J'ai essayé en redirigant la sortie vers une table (INTO xxx FROM ...) mais
cela ne fonctionne aussi qu'avec l'analyseur, pas via un programme.
Une piste, une solution ??????
Aloha, 2nis