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
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
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;
Si jamais quelqu'un vois le problème car en générale j'utilise plutôt des curseurs pour me renvoyer des valeurs.
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
Partager