J'ai une fonction en pl/sql qui est censée me retourner une chaîne de caractères or, elle me retourne Nothing systématiquement ! J'ai ajouté ma fonction dans mon DataSet en précisant que ça doit me retourner une valeur unique mais ça n'a pas l'air de trop fonctionner

pl/sql
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
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
78
79
80
81
   FUNCTION proc_ajout_agriculteur (p_nom_exploitation       IN VARCHAR2,
                                    p_addr_exploitation      IN VARCHAR2,
                                    p_cp_exploitation        IN VARCHAR2,
                                    p_commune_exploitation   IN VARCHAR2,
                                    p_nom_exploitant         IN VARCHAR2,
                                    p_addr_exploitant        IN VARCHAR2,
                                    p_cp_exploitant          IN VARCHAR2,
                                    p_commune_exploitant     IN VARCHAR2,
                                    p_tel_fixe               IN VARCHAR2,
                                    p_tel_port               IN VARCHAR2,
                                    p_fax                    IN VARCHAR2,
                                    p_mail                   IN VARCHAR2,
                                    p_sau                    IN NUMBER,
                                    p_herbe                  IN NUMBER,
                                    p_labourable             IN NUMBER,
                                    p_fumiers                IN NUMBER,
                                    p_dte_creation           IN DATE,
                                    p_dte_sortie             IN DATE,
                                    p_accord                 IN DATE,
                                    p_comm                   IN VARCHAR2,
                                    p_siret                  IN VARCHAR2)
      RETURN VARCHAR2
   AS
      v_num   agriculteurs.num%TYPE;
      v_sqc   NUMBER;
   --      v_step   packepur.steps.lib%TYPE;
   BEGIN
      SELECT sqc_agriculteurs.NEXTVAL INTO v_sqc FROM DUAL;
 
      -- Adapter la numérotation en fonction de la numérotation finale !!
      v_num := 'SDEA_' || TO_CHAR (v_sqc);
 
      INSERT INTO agriculteurs (num,
                                step,
                                nom_exploitation,
                                addr_exploitation,
                                cp_exploitation,
                                commune_exploitation,
                                nom_exploitant,
                                addr_exploitant,
                                cp_exploitant,
                                commune_exploitant,
                                tel_fixe,
                                tel_port,
                                fax,
                                mail,
                                sau,
                                herbe,
                                labourable,
                                fumiers,
                                dte_creation,
                                dte_sortie,
                                accord,
                                comm,
                                siret)
           VALUES (v_num,
                   NULL, -- A changer lorsque les périmètres seront disponibles (trouver la step d'après la commune de l'exploitation) !!
                   p_nom_exploitation,
                   p_addr_exploitation,
                   p_cp_exploitation,
                   p_commune_exploitation,
                   p_nom_exploitant,
                   p_addr_exploitant,
                   p_cp_exploitant,
                   p_commune_exploitant,
                   p_tel_fixe,
                   p_tel_port,
                   p_fax,
                   p_mail,
                   p_sau,
                   p_herbe,
                   p_labourable,
                   p_fumiers,
                   p_dte_creation,
                   p_dte_sortie,
                   p_accord,
                   p_comm,
                   p_siret);
 
      RETURN v_num;
   END;
VB.Net
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
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
    Private Sub InsererAgriculteur()
        Dim hfAjoutAgriculteur As String = Request.Form("hfAjoutAgriculteur")
 
        If hfAjoutAgriculteur = "true" Then
            Dim _query As New dsAgriculteursTableAdapters.QueriesTableAdapter
            Dim num As String = String.Empty
 
            With fvExploitationAgricole
                Dim SAU As Nullable(Of Decimal)
                Dim Herbe As Nullable(Of Decimal)
                Dim Labourable As Nullable(Of Decimal)
                Dim Fumiers As Nullable(Of Decimal)
                Dim DateCreation As Date
                Dim DateSortie As Nullable(Of Date)
                Dim Accord As Nullable(Of Date)
                Dim txt As TextBox
 
                txt = CType(.FindControl("txtSAUAjout"), TextBox)
                If txt.Text <> String.Empty Then
                    SAU = Convert.ToInt32(txt.Text)
                End If
                txt = CType(.FindControl("txtHerbeAjout"), TextBox)
                If txt.Text <> String.Empty Then
                    Herbe = Convert.ToInt32(txt.Text)
                End If
                txt = CType(.FindControl("txtLabourableAjout"), TextBox)
                If txt.Text <> String.Empty Then
                    Labourable = Convert.ToInt32(txt.Text)
                End If
                txt = CType(.FindControl("txtFumiersAjout"), TextBox)
                If txt.Text <> String.Empty Then
                    Fumiers = Convert.ToInt32(txt.Text)
                End If
                txt = CType(.FindControl("txtDateCreationAjout"), TextBox)
                If txt.Text <> String.Empty Then
                    DateCreation = Convert.ToDateTime(txt.Text)
                End If
                txt = CType(.FindControl("txtDateSortieAjout"), TextBox)
                If txt.Text <> String.Empty Then
                    DateSortie = Convert.ToDateTime(txt.Text)
                End If
                txt = CType(.FindControl("txtAccordAjout"), TextBox)
                If txt.Text <> String.Empty Then
                    Accord = Convert.ToDateTime(txt.Text)
                End If
 
                num = _query.FuncAjoutAgriculteur(
                    CType(.FindControl("txtNomExploitationAjout"), TextBox).Text,
                    CType(.FindControl("txtAddrExploitationAjout"), TextBox).Text,
                    CType(.FindControl("txtCPExploitationAjout"), TextBox).Text,
                    CType(.FindControl("ddlCommunesExploitation"), DropDownList).SelectedValue,
                    CType(.FindControl("txtNomExploitantAjout"), TextBox).Text,
                    CType(.FindControl("txtAddrExploitantAjout"), TextBox).Text,
                    CType(.FindControl("txtCPExploitantAjout"), TextBox).Text,
                    CType(.FindControl("ddlCommunesExploitant"), DropDownList).SelectedValue,
                    CType(.FindControl("txtTelFixeAjout"), TextBox).Text,
                    CType(.FindControl("txtTelPortAjout"), TextBox).Text,
                    CType(.FindControl("txtFAXAjout"), TextBox).Text,
                    CType(.FindControl("txtMailAjout"), TextBox).Text,
                    SAU,
                    Herbe,
                    Labourable,
                    Fumiers,
                    DateCreation,
                    DateSortie,
                    Accord,
                    CType(.FindControl("txtCommAjout"), TextBox).Text,
                    CType(.FindControl("txtSIRETAjout"), TextBox).Text)
 
                .ChangeMode(FormViewMode.ReadOnly)
            End With
 
            '* Rechargement de la liste des agriculteurs et sélection du nouvel agriculteur ajouté
            ddlAgriculteurs.DataBind()
            ddlAgriculteurs.Items.FindByValue(num).Selected = True
        End If
    End Sub
Si jamais quelqu'un vois le problème car en générale j'utilise plutôt des curseurs pour me renvoyer des valeurs.