Bonjours,

J'ai besoin d'une fonction mais celle si ne marche pas étant un débutant sous MySQL j'aurais voulu savoir si vous voyez l'erreur. Je pense que j'ai mal déclaré le curseur.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
CREATE FUNCTION retourneSource(idDoc VARCHAR(32))
RETURNS @retour TABLE ( site CHAR(255) null, nombre INTEGER null )
AS
BEGIN
 
	DECLARE @temp TABLE (site CHAR(255), nombre INTEGER)
 
	DECLARE curseur CURSOR FOR 
		select site, count(site)
		from (
				select id_doc, substring(url from (instr(url, '//')+2) for instr(substring(url from (instr(url, '//')+2)), '/')-1)  as site
				from source
				where url <> ''
				   limit 1000000
			 ) tempTable
		where id_doc like idDoc
		group by site
		order by 2 desc
 
	OPEN curseur 
	DECLARE @site char(255) 
	DECLARE @nombre integer 
 
	FETCH NEXT FROM curseur INTO @site, @nombre
	WHILE (@@FETCH_STATUS = 0) 
	BEGIN 
		INSERT INTO @temp VALUES ( @site, @nombre ) 
		FETCH NEXT FROM curseur INTO @site, @nombre
	END
 
	CLOSE curseur 
	DEALLOCATE curseur 
 
	INSERT INTO @reponse
	SELECT * FROM @temp
 
	RETURN 
END
Il me dit qu'il y a un erreur a la deuxième ligne au niveau du "RETURNS @retour" mais je vois vraiment pas pourquoi.

Cordialement.