Bonjour,
Je recherche à récupérer la valeur qui serait actuellement définie précedement par un set rowcount n
Vous remerciant par avance
Bonjour,
Je recherche à récupérer la valeur qui serait actuellement définie précedement par un set rowcount n
Vous remerciant par avance
D'après la doc 15:
mais un petit essai montre que cela ne marche pas en 12.5.3 ni en 12.5.4.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select @@setrowcount
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
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.
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:
mais cela ne donne quand même pas la valeur qui a été positionnée...
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 [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>
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
Bonjour,
Avec la 12.5, Vous pouvez récupérer la valeur du SET ROWCOUNT imposé à la dernière requête utilisée :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DECLARE @nb_row int SELECT @nb_row = @@ROWCOUNT
Si la requête ramène plus que 10 lignes, @nb_row vaudra 10.
En partant de la procédure sp_helpoptions
Voici une requête renvoyant les différentes options activées:
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 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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager