Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels 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 13/12/2006, 10h21   #1
Invité de passage
 
Inscription : décembre 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 7
Points : 2
Points : 2
Par défaut récupérer la valeur définie par un set rowcount n

Bonjour,

Je recherche à récupérer la valeur qui serait actuellement définie précedement par un set rowcount n

Vous remerciant par avance
sebhuet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2006, 11h37   #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
D'après la doc 15:
Code :
1
2
 
SELECT @@setrowcount
mais un petit essai montre que cela ne marche pas en 12.5.3 ni en 12.5.4.

Je ne sais pas si il y a une autre technique...

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 13/12/2006, 15h24   #3
Invité de passage
 
Inscription : décembre 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 7
Points : 2
Points : 2
Par défaut ...dommage...

Nous n'allons pas migrer vers 15x avant un petit bout de temps. je vais devoir trouver une autre sollution.
Notre problème est qu'un individu peux scrupuleux a utiliser des set rowcount pour limiter le nombre d'enregistrements visibles dans une classe d'affichage et que cette limitation est propagée bien évidemment tout au long des éventuelles procédures exécutées pour l'affichage ce qui conduit à des résultats incohérents. Mon idée palliative était de stocké en début de traitement le rowcount sollicité par la classe, faire un rowcount 0 puis remettre le rowcount sollicité sur la partie qui restitue les datas. Je pense que je vais faire un select 1 sur une table de référence dont je connais la grande longueur et regarder le nombre d'enregistrements retourné... pas fabuleux, mais en attendant de retouchez les classes de visualisation de notre appli...

Michael, l'occasion pour moi de vous remerciez pour les informations publiées sur l'installation de ase sur linux qui m'ont bien aidé il y a quelques années déjà.

Sébastien.
sebhuet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2006, 16h03   #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
Merci...

La seule chose que j'ai trouvée c'est la variable globale @@options qui a un flag qui peut être testée pour voir si le SET ROWCOUNT est actif:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
[25] ADV.master.1> SET rowcount 1000;
[26] ADV.master.1> SELECT @@options;
 
 ----------------------
   0x80211000000f014403
 
(1 row affected)
[27] ADV.master.1> SET rowcount 0;
[28] ADV.master.1> SELECT @@options;
 
 ----------------------
   0x80210000000f014403
 
(1 row affected)
[29] ADV.master.1>
mais cela ne donne quand même pas la valeur qui a été positionnée...

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 13/12/2006, 16h37   #5
Candidat au titre de Membre du Club
 
Inscription : mars 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 17
Points : 10
Points : 10
Bonjour,

Avec la 12.5, Vous pouvez récupérer la valeur du SET ROWCOUNT imposé à la dernière requête utilisée :
Code :
1
2
3
DECLARE @nb_row int
SELECT  @nb_row = @@ROWCOUNT
Attention, si le rowcount a été fixé à 10 par exemple, et que la requête ne ramène que 8 lignes, @nb_row vaudra 8.
Si la requête ramène plus que 10 lignes, @nb_row vaudra 10.
Semhur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 11h09   #6
Invité de passage
 
Administrateur de base de données
Inscription : juillet 2011
Messages : 2
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données

Informations forums :
Inscription : juillet 2011
Messages : 2
Points : 2
Points : 2
En partant de la procédure sp_helpoptions

Voici une requête renvoyant les différentes options activées:

Code :
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
 
declare @high_bits int
declare @low_bits int
SELECT @high_bits = convert(int,substring(@@options,1,4))
SELECT @low_bits = convert(int,substring(@@options,5,4))
 
IF (@high_bits & 268435456 = 268435456 )    print 'showplan is on'             else print 'showplan is off'
IF (@high_bits & 32768 = 32768)             print 'nocount is on'              else print 'nocount is off'
IF (@high_bits & 4096 = 4096)               print 'rowcount is on'             else print 'rowcount is 0'
IF (@high_bits & -2147418112 = -2147418112) print 'arithabort is on'           else print 'arithabort is off'
IF (@high_bits & 1073741824 = 1073741824)   print 'arithignore is on'          else print 'arithignore is off'
IF (@high_bits & 1073741824 = 1073741824)   print 'arithignore arith_overflow' else print 'arithignore arith_overflow off'
IF (@high_bits & 32 = 32)                   print 'close on endtran is on'     else print 'close on endtran is off'
IF (@low_bits & 33554432 = 33554432)        print 'ansinull is on'             else print 'ansinull is off'
IF (@low_bits & 536870912 = 536870912)      print 'ansi_permissions is on'     else print 'ansi_permissions is off'
-- Note: if 'noexec' or 'parseonly' were on, this procedure could not run,
print 'noexec is off'    -- so no test is necessary.
print 'parseonly is off.'-- so no test is necessary.
go
 
(1 row affected)
(1 row affected)
showplan IS off
nocount IS off
rowcount IS 0
arithabort IS ON
arithignore IS off
arithignore arith_overflow off
close ON endtran IS off
ansinull IS off
ansi_permissions IS off
noexec IS off
parseonly IS off.
sdelobel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h45.


 
 
 
 
Partenaires

Hébergement Web