Précédent   Forum des professionnels en informatique > Bases de données > Sybase > Adaptive Server Enterprise
Adaptive Server Enterprise Forum d'entraide concernant Sybase Adaptive Server Enterprise, le dataserver phare de Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/10/2007, 16h00   #1
Nouveau Membre du Club
 
Avatar de Doctor Z
 
Inscription : mars 2004
Messages : 88
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 88
Points : 26
Points : 26
Par défaut [T-SQL]Envoyer en paramètre de proc stock Sybase une variable date shell

Bonjour à tous,

Voilà j'ai un script shell dans lequel je calcule une date (en fait, je reçoi un
fichier duquel j'extrai la date que je mémorise dans une variable). A l'intérieur
d'une session iSQL (Sybase) dans ce shell, j'exécute une procédure stockée.
Je souhaiterai envoyer comme paramètre de cette procédure stockée ma
date. Comment puis-je faire?

Voilà comment je calcule la date (la variable $fileimp possède le nom du
fichier [exemple : toto_20071029] duquel j'extrais la date) :
Code :
1
2
3
4
5
6
7
8
9
SET DateFichier = `echo $fileimp | cut -d"_" -f2`
SET DateFichier = `echo $DateFichier | cut -d"." -f1`
 
# --- Exécution de la procédure stockée
isql -U$login -P$passwd <<eot  > $REPTMP/temp.sts
 
DECLARE @statut int
print ' '
exec @statut = MABASE.proprio.maproc $DateFichier
Avec ce code, il me pose un problème sur la date, comment puis-je faire ?

Par avance, je vous en remercie.
__________________
Doctor Z
----------
Deus gosta do povo luso.
Olivença, l'oubliée.
Doctor Z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 16h38   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Il est en général plus facile de répondre si on a les messages d'erreurs :-)

Ceci étant, je pense que comme la date est de la forme 20071028 je pense que ASE pense qu'il s'agit d'un nombre. Des quotes autour de la date devraient résoudre le problème...

Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 18h30   #3
Nouveau Membre du Club
 
Avatar de Doctor Z
 
Inscription : mars 2004
Messages : 88
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 88
Points : 26
Points : 26
Avant toute chose, merci pour ta réponse.

En fait je reçoi un message d'erreur personnalisé que je n'arrive pas à
retrouver.

En fait, ce que je veux est la chose suivante : d'après le cas exposé ci-
dessus, je cherche à envoyer la date récupérée par le biais d'un paramètre
à la procédure stockée (peut importe que cette date soit réellement une
variable de type date ou pas), puis dans ma procédure stockée avoir un
paramètre pour récupérer cette information.

Exemple :
- j'ai un fichier nommé exemple_20071029
- un shell nommé shell.csh
- une procédure stockée nommé ma proc

Par le biais la commande de découpage, j'ai récupère ma date (ce qui
fonctionne), puis je mémorise ma date dans une variable que j'envoi ensuite
en paramètre à ma procédure stockée.

Voici le code dans mon shell.csh :
Code :
1
2
3
4
5
6
7
8
9
10
# Récupération de la date
SET DateFichier = `echo $fileimp | cut -d"_" -f2`
SET DateFichier = `echo $DateFichier | cut -d"." -f1`
 
# Envoi de la date à ma procédure stockée maproc
isql -U$login -P$passwd <<eot  > $REPTMP/temp.sts
DECLARE @statut int
print ' '
 
exec @statut = MABASE.moi.maproc $DateFichier
Voici ensuite le code de maproc :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
USE MABASE
go
 
IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'P' AND name = 'maproc')
BEGIN
        DROP PROC maproc
        print 'drop proc maproc'
END
go
 
print 'create proc maproc'
go
 
CREATE PROCEDURE maproc
(
	@dt_fichier		int
)
AS
 
print 'Date du fichier :'
print @dt_fichier
Et cela ne fonctionne pas et je ne sais pas pourquoi, car j'ai bien des 2 côtés
un entier ...
__________________
Doctor Z
----------
Deus gosta do povo luso.
Olivença, l'oubliée.
Doctor Z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 08h13   #4
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
De nouveau: qu'est-ce qui ne fonctionne pas ?

Est-ce que le print dans la proc ne marche pas, ou ???

Note: ton script shell n'a pas de "eot" correspondant au "here document" que tu démarre dans ton appel à isql, mais je suppose que c'est une erreur de transcription...

Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 09h35   #5
Nouveau Membre du Club
 
Avatar de Doctor Z
 
Inscription : mars 2004
Messages : 88
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 88
Points : 26
Points : 26
Bonjour,

Avant toute chose, merci pour ta réponse.

Il ne rentre même pas à l'intérieur de la procédure stockée, car j'ai un print
et celui-ci ne s'exécute pas (j'ai un log qui recense cette information).

Pour le eot, c'est parce que je n'ai pas copié l'intégralité de mon code

Qu'est ce qui ne fonctionne pas? Et bien, comme indiqué j'envoi la date en
paramètre et apparement il ne l'accepte pas (j'ai un message d'erreur
personnalisé qui m'indique :

Citation:
Msg 44400, Level 16, State 1:
Server 'MONSERVEUR', Procedure 'maproc', Line 44:
Erreur lors de la recuperation de la date de reference du dernier traitement
(return status = 98)
Extraction des donnees STATUS_EXEC1= 98
Je suis convaincu que c'est quelque chose de rien du tout, mais je n'arrive
pas à savoir ce qui cloche

Pourtant, la syntaxe, que se soit du shell ou de la procédure stockée est bien
correcte, n'est-ce pas ?
__________________
Doctor Z
----------
Deus gosta do povo luso.
Olivença, l'oubliée.
Doctor Z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 16h18   #6
Nouveau Membre du Club
 
Avatar de Doctor Z
 
Inscription : mars 2004
Messages : 88
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 88
Points : 26
Points : 26
Bonjour,

En fait n'exécutait pas le bonne procédure , désolé du dérangement et merci
encore.
__________________
Doctor Z
----------
Deus gosta do povo luso.
Olivença, l'oubliée.
Doctor Z est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h23.


 
 
 
 
Partenaires

Hébergement Web