Sie sind auf Seite 1von 985

Adaptive Server Anywhere

Manuel de rfrence SQL

Rf. du document : DC03944-01-0902-01


Dernire mise jour : Octobre 2004
Copyright 19892004 Sybase, Inc. Copyright partiel 20012004 iAnywhere Solutions, Inc. Tous droits rservs.

Tout ou partie de cette publication ne peut tre reproduit, transmis ou traduit, sous quelque forme ou par quelque moyen que ce soit (lectronique,
mcanique, manuel, optique ou autre) sans laccord crit pralable diAnywhere Solutions, Inc. iAnywhere Solutions, Inc est une filiale de
Sybase, Inc.

Sybase, le logo SYBASE, AccelaTrade, ADA Workbench, Adaptable Windowing Environment, Adaptive Component Architecture, Adaptive
Server, Adaptive Server Anywhere, Adaptive Server Enterprise, Adaptive Server Enterprise Monitor, Adaptive Server Enterprise Replication,
Adaptive Server Everywhere, Adaptive Server IQ, Adaptive Warehouse, AnswerBase, Anywhere Studio, Application Manager, AppModeler,
APT Workbench, APT-Build, APT-Edit, APT-Execute, APT-Library, APT-Translator, ASEP, AvantGo, AvantGo Application Alerts, AvantGo
Mobile Delivery, AvantGo Mobile Document Viewer, AvantGo Mobile Inspection, AvantGo Mobile Marketing Channel, AvantGo Mobile Pharma,
AvantGo Mobile Sales, AvantGo Pylon, AvantGo Pylon Application Server, AvantGo Pylon Conduit, AvantGo Pylon PIM Server, AvantGo
Pylon Pro, Backup Server, BayCam, Bit-Wise, BizTracker, Certified PowerBuilder Developer, Certified SYBASE Professional, Certified SYBASE
Professional Logo, ClearConnect, Client Services, Client-Library, CodeBank, Column Design, ComponentPack, Connection Manager, Convoy/DM,
Copernicus, CSP, Data Pipeline, Data Workbench, DataArchitect, Database Analyzer, DataExpress, DataServer, DataWindow, DB-Library,
dbQueue, Developers Workbench, Direct Connect Anywhere, DirectConnect, Distribution Director, Dynamic Mobility Model, Dynamo, e-ADK,
E-Anywhere, e-Biz Integrator, EC Gateway, ECMAP, ECRTP, eFulfillment Accelerator, Electronic Case Management, Embedded SQL, EMS,
Enterprise Application Studio, Enterprise Client/Server, Enterprise Connect, Enterprise Data Studio, Enterprise Manager, Enterprise Portal (logo),
Enterprise SQL Server Manager, Enterprise Work Architecture, Enterprise Work Designer, Enterprise Work Modeler, eProcurement Accelerator,
eremote, Everything Works Better When Everything Works Together, EWA, E-Whatever, Financial Fusion, Financial Fusion (and design), Financial
Fusion Server, Formula One, Fusion Powered e-Finance, Fusion Powered Financial Destinations, Fusion Powered STP, Gateway Manager,
GeoPoint, GlobalFIX, iAnywhere, iAnywhere Solutions, ImpactNow, Industry Warehouse Studio, InfoMaker, Information Anywhere, Information
Everywhere, InformationConnect, InstaHelp, Intelligent Self-Care, InternetBuilder, iremote, iScript, Jaguar CTS, jConnect for JDBC,
KnowledgeBase, Logical Memory Manager, Mail Anywhere Studio, MainframeConnect, Maintenance Express, Manage Anywhere Studio, MAP,
M-Business Channel, M-Business Network, M-Business Server, MDI Access Server, MDI Database Gateway, media.splash, Message Anywhere
Server, MetaWorks, MethodSet, ML Query, MobiCATS, My AvantGo, My AvantGo Media Channel, My AvantGo Mobile Marketing, MySupport,
Net-Gateway, Net-Library, New Era of Networks, Next Generation Learning, Next Generation Learning Studio, O DEVICE, OASiS, OASiS logo,
ObjectConnect, ObjectCycle, OmniConnect, OmniSQL Access Module, OmniSQL Toolkit, Open Biz, Open Business Interchange, Open Client,
Open Client/Server, Open Client/Server Interfaces, Open ClientConnect, Open Gateway, Open Server, Open ServerConnect, Open Solutions,
Optima++, Orchestration Studio, Partnerships that Work, PB-Gen, PC APT Execute, PC DB-Net, PC Net Library, PhysicalArchitect, Pocket
PowerBuilder, PocketBuilder, Power Through Knowledge, power.stop, Power++, PowerAMC, PowerBuilder, PowerBuilder Foundation Class
Library, PowerDesigner, PowerDimensions, PowerDynamo, Powering the New Economy, PowerJ, PowerScript, PowerSite, PowerSocket,
Powersoft, Powersoft Portfolio, Powersoft Professional, PowerStage, PowerStudio, PowerTips, PowerWare Desktop, PowerWare Enterprise,
ProcessAnalyst, QAnywhere, Rapport, Relational Beans, RepConnector, Replication Agent, Replication Driver, Replication Server, Replication
Server Manager, Replication Toolkit, Report Workbench, Report-Execute, Resource Manager, RW-DisplayLib, RW-Library, S.W.I.F.T. Message
Format Libraries, SAFE, SAFE/PRO, SDF, Secure SQL Server, Secure SQL Toolset, Security Guardian, SKILS, smart.partners, smart.parts,
smart.script, SQL Advantage, SQL Anywhere, SQL Anywhere Studio, SQL Code Checker, SQL Debug, SQL Edit, SQL Edit/TPU,
SQL Everywhere, SQL Modeler, SQL Remote, SQL Server, SQL Server Manager, SQL Server SNMP SubAgent, SQL Server/CFT,
SQL Server/DBM, SQL SMART, SQL Station, SQL Toolset, SQLJ, Stage III Engineering, Startup.Com, STEP, SupportNow, Sybase Central,
Sybase Client/Server Interfaces, Sybase Development Framework, Sybase Financial Server, Sybase Gateways, Sybase Learning Connection,
Sybase MPP, Sybase SQL Desktop, Sybase SQL Lifecycle, Sybase SQL Workgroup, Sybase Synergy Program, Sybase User Workbench, Sybase
Virtual Server Architecture, SybaseWare, Syber Financial, SyberAssist, SybMD, SyBooks, System 10, System 11, System XI (logo), SystemTools,
Tabular Data Stream, The Enterprise Client/Server Company, The Extensible Software Platform, The Future Is Wide Open, The Learning
Connection, The Model For Client/Server Solutions, The Online Information Center, The Power of One, TotalFix, TradeForce, Transact-SQL,
Translation Toolkit, Turning Imagination Into Reality, UltraLite, UltraLite.NET, UNIBOM, Unilib, Uninull, Unisep, Unistring, URK Runtime Kit
for UniCode, Versacore, Viewer, VisualWriter, VQL, Warehouse Control Center, Warehouse Studio, Warehouse WORKS, WarehouseArchitect,
Watcom, Watcom SQL, Watcom SQL Server, Web Deployment Kit, Web.PB, Web.SQL, WebSights, WebViewer, WorkGroup SQL Server,
XA-Library, XA-Server et XP Server sont des marques de Sybase, Inc. ou de ses filiales.

Tous les autres noms de produit, socit ou marque appartiennent leurs propritaires respectifs.

ii
Table des matires

Prface xi
Documentation SQL Anywhere Studio . . . . . . . . . . . . . xii
Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi
La base de donnes exemple Adaptive Server Anywhere . . xviii
Observations et sources dinformations complmentaires . . xix

I SQL 1
1 Elments de langage SQL 3
Mots-cls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Identificateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Chanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Oprateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Conditions de recherche . . . . . . . . . . . . . . . . . . . . . 24
Valeurs spciales . . . . . . . . . . . . . . . . . . . . . . . . . 35
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Valeur NULL . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

2 Types de donnes SQL 55


Types de donnes caractres . . . . . . . . . . . . . . . . . . 56
Types de donnes numriques . . . . . . . . . . . . . . . . . 61
Types de donnes montaires . . . . . . . . . . . . . . . . . 69
Type de donnes BIT . . . . . . . . . . . . . . . . . . . . . . 70
Types de donnes date et heure . . . . . . . . . . . . . . . . 71
Types de donnes binaires . . . . . . . . . . . . . . . . . . . 78
Domaines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Conversions de types de donnes . . . . . . . . . . . . . . . 83
Conversion de types de donnes Java et SQL . . . . . . . . 86
Conformit An 2000 . . . . . . . . . . . . . . . . . . . . . . . 89

3 Fonctions SQL 95
Types de fonction . . . . . . . . . . . . . . . . . . . . . . . . . 96
Liste alphabtique des fonctions . . . . . . . . . . . . . . . . 110

iii
4 Instructions SQL 261
Conventions utilises pour les instructions SQL . . . . . . . . 269
Instruction ALLOCATE DESCRIPTOR [ESQL] . . . . . . . . 273
Instruction ALTER DATABASE . . . . . . . . . . . . . . . . . 275
Instruction ALTER DBSPACE . . . . . . . . . . . . . . . . . . 280
Instruction ALTER DOMAIN . . . . . . . . . . . . . . . . . . . 282
Instruction ALTER EVENT . . . . . . . . . . . . . . . . . . . . 283
Instruction ALTER FUNCTION . . . . . . . . . . . . . . . . . 285
Instruction ALTER INDEX . . . . . . . . . . . . . . . . . . . . 286
Instruction ALTER PROCEDURE . . . . . . . . . . . . . . . . 288
Instruction ALTER PUBLICATION . . . . . . . . . . . . . . . 290
Instruction ALTER REMOTE MESSAGE TYPE [SQL Remote] 292
Instruction ALTER SERVER . . . . . . . . . . . . . . . . . . . 294
Instruction ALTER SERVICE . . . . . . . . . . . . . . . . . . 297
Instruction ALTER SYNCHRONIZATION SUBSCRIPTION
[MobiLink] . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Instruction ALTER SYNCHRONIZATION USER [MobiLink] . . 303
Instruction ALTER TABLE . . . . . . . . . . . . . . . . . . . . 305
Instruction ALTER TRIGGER . . . . . . . . . . . . . . . . . . 313
Instruction ALTER VIEW . . . . . . . . . . . . . . . . . . . . . 315
Instruction ALTER WRITEFILE (dconseille) . . . . . . . . . 317
Instruction BACKUP . . . . . . . . . . . . . . . . . . . . . . . 319
Instruction BEGIN . . . . . . . . . . . . . . . . . . . . . . . . 324
Instruction BEGIN TRANSACTION . . . . . . . . . . . . . . . 327
Instruction CALL . . . . . . . . . . . . . . . . . . . . . . . . . 330
Instruction CASE . . . . . . . . . . . . . . . . . . . . . . . . . 332
Instruction CHECKPOINT . . . . . . . . . . . . . . . . . . . . 335
Instruction CLEAR [Interactive SQL] . . . . . . . . . . . . . . 336
Instruction CLOSE [ESQL] [SP] . . . . . . . . . . . . . . . . . 337
Instruction COMMENT . . . . . . . . . . . . . . . . . . . . . . 339
Instruction COMMIT . . . . . . . . . . . . . . . . . . . . . . . 341
Instruction CONFIGURE [Interactive SQL] . . . . . . . . . . . 343
Instruction CONNECT [ESQL] [Interactive SQL] . . . . . . . . 344
Instruction CREATE COMPRESSED DATABASE (dcon-
seille) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Instruction CREATE DATABASE . . . . . . . . . . . . . . . . 350
Instruction CREATE DBSPACE . . . . . . . . . . . . . . . . . 357
Instruction CREATE DECRYPTED FILE . . . . . . . . . . . . 359
Instruction CREATE DOMAIN . . . . . . . . . . . . . . . . . . 360
Instruction CREATE ENCRYPTED FILE . . . . . . . . . . . . 362
Instruction CREATE EVENT . . . . . . . . . . . . . . . . . . . 364
Instruction CREATE EXISTING TABLE . . . . . . . . . . . . . 371
Instruction CREATE EXTERNLOGIN . . . . . . . . . . . . . . 374

iv
Instruction CREATE FUNCTION . . . . . . . . . . . . . . . . 376
Instruction CREATE INDEX . . . . . . . . . . . . . . . . . . . 383
Instruction CREATE MESSAGE [T-SQL] . . . . . . . . . . . . 388
Instruction CREATE PROCEDURE . . . . . . . . . . . . . . . 390
Instruction CREATE PROCEDURE [T-SQL] . . . . . . . . . . 400
Instruction CREATE PUBLICATION . . . . . . . . . . . . . . 402
Instruction CREATE REMOTE MESSAGE TYPE [SQL Remote]405
Instruction CREATE SCHEMA . . . . . . . . . . . . . . . . . 407
Instruction CREATE SERVER . . . . . . . . . . . . . . . . . . 409
Instruction CREATE SERVICE . . . . . . . . . . . . . . . . . 412
Instruction CREATE STATISTICS . . . . . . . . . . . . . . . . 416
Instruction CREATE SUBSCRIPTION [SQL Remote] . . . . . 417
Instruction CREATE SYNCHRONIZATION SUBSCRIPTION
[MobiLink] . . . . . . . . . . . . . . . . . . . . . . . . . . 419
Instruction CREATE SYNCHRONIZATION USER [MobiLink] 422
Instruction CREATE TABLE . . . . . . . . . . . . . . . . . . . 425
Instruction CREATE TRIGGER . . . . . . . . . . . . . . . . . 438
Instruction CREATE TRIGGER [SQL Remote] . . . . . . . . 443
Instruction CREATE TRIGGER [T-SQL] . . . . . . . . . . . . 446
Instruction CREATE VARIABLE . . . . . . . . . . . . . . . . . 447
Instruction CREATE VIEW . . . . . . . . . . . . . . . . . . . . 448
Instruction CREATE WRITEFILE (dconseille) . . . . . . . . 450
Instruction DEALLOCATE . . . . . . . . . . . . . . . . . . . . 452
Instruction DEALLOCATE DESCRIPTOR [ESQL] . . . . . . . 453
Section de dclaration [ESQL] . . . . . . . . . . . . . . . . . 454
Instruction DECLARE . . . . . . . . . . . . . . . . . . . . . . 455
Instruction DECLARE CURSOR [ESQL] [SP] . . . . . . . . . 456
Instruction DECLARE CURSOR [T-SQL] . . . . . . . . . . . . 461
Instruction DECLARE LOCAL TEMPORARY TABLE . . . . . 463
Instruction DELETE . . . . . . . . . . . . . . . . . . . . . . . 465
Instruction DELETE (positionne) [ESQL] [SP] . . . . . . . . 467
Instruction DESCRIBE [ESQL] . . . . . . . . . . . . . . . . . 469
Instruction DISCONNECT [ESQL] [Interactive SQL] . . . . . 473
Instruction DROP . . . . . . . . . . . . . . . . . . . . . . . . . 474
Instruction DROP DATABASE . . . . . . . . . . . . . . . . . . 476
Instruction DROP CONNECTION . . . . . . . . . . . . . . . . 477
Instruction DROP EXTERNLOGIN . . . . . . . . . . . . . . . 478
Instruction DROP PUBLICATION . . . . . . . . . . . . . . . . 479
Instruction DROP REMOTE MESSAGE TYPE [SQL Remote] 480
Instruction DROP SERVER . . . . . . . . . . . . . . . . . . . 481
Instruction DROP SERVICE . . . . . . . . . . . . . . . . . . . 482
Instruction DROP STATEMENT [ESQL] . . . . . . . . . . . . 483
Instruction DROP STATISTICS . . . . . . . . . . . . . . . . . 484

v
Instruction DROP SUBSCRIPTION [SQL Remote] . . . . . . 485
Instruction DROP SYNCHRONIZATION SUBSCRIPTION
[MobiLink] . . . . . . . . . . . . . . . . . . . . . . . . . . 486
Instruction DROP SYNCHRONIZATION USER [MobiLink] . . 487
Instruction DROP VARIABLE . . . . . . . . . . . . . . . . . . 488
Opration EXCEPT . . . . . . . . . . . . . . . . . . . . . . . 489
Instruction EXECUTE [ESQL] . . . . . . . . . . . . . . . . . . 491
Instruction EXECUTE [T-SQL] . . . . . . . . . . . . . . . . . . 493
Instruction EXECUTE IMMEDIATE [SP] . . . . . . . . . . . . 495
Instruction EXIT [Interactive SQL] . . . . . . . . . . . . . . . . 498
Instruction EXPLAIN [ESQL] . . . . . . . . . . . . . . . . . . 500
Instruction FETCH [ESQL] [SP] . . . . . . . . . . . . . . . . . 502
Instruction FOR . . . . . . . . . . . . . . . . . . . . . . . . . . 507
Instruction FORWARD TO . . . . . . . . . . . . . . . . . . . . 509
Clause FROM . . . . . . . . . . . . . . . . . . . . . . . . . . 511
Instruction GET DATA [ESQL] . . . . . . . . . . . . . . . . . . 518
Instruction GET DESCRIPTOR [ESQL] . . . . . . . . . . . . 520
Instruction GET OPTION [ESQL] . . . . . . . . . . . . . . . . 522
Instruction GOTO [T-SQL] . . . . . . . . . . . . . . . . . . . . 523
Instruction GRANT . . . . . . . . . . . . . . . . . . . . . . . . 524
Instruction GRANT CONSOLIDATE [SQL Remote] . . . . . . 529
Instruction GRANT PUBLISH [SQL Remote] . . . . . . . . . 531
Instruction GRANT REMOTE [SQL Remote] . . . . . . . . . 532
Instruction GRANT REMOTE DBA [SQL Remote] . . . . . . 534
Clause GROUP BY . . . . . . . . . . . . . . . . . . . . . . . 535
Instruction HELP [Interactive SQL] . . . . . . . . . . . . . . . 539
Instruction IF . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
Instruction IF [T-SQL] . . . . . . . . . . . . . . . . . . . . . . 542
Instruction INCLUDE [ESQL] . . . . . . . . . . . . . . . . . . 544
Instruction INPUT [Interactive SQL] . . . . . . . . . . . . . . . 545
Instruction INSERT . . . . . . . . . . . . . . . . . . . . . . . . 551
Instruction INSTALL JAVA . . . . . . . . . . . . . . . . . . . . 555
Opration INTERSECT . . . . . . . . . . . . . . . . . . . . . 558
Instruction LEAVE . . . . . . . . . . . . . . . . . . . . . . . . 560
Instruction LOAD STATISTICS . . . . . . . . . . . . . . . . . 562
Instruction LOAD TABLE . . . . . . . . . . . . . . . . . . . . . 563
Instruction LOCK TABLE . . . . . . . . . . . . . . . . . . . . 572
Instruction LOOP . . . . . . . . . . . . . . . . . . . . . . . . . 574
Instruction MESSAGE . . . . . . . . . . . . . . . . . . . . . . 575
Instruction OPEN [ESQL] [SP] . . . . . . . . . . . . . . . . . 579
Instruction OUTPUT [Interactive SQL] . . . . . . . . . . . . . 582
Instruction PARAMETERS [Interactive SQL] . . . . . . . . . . 587
Instruction PASSTHROUGH [SQL Remote] . . . . . . . . . . 588

vi
Instruction PREPARE [ESQL] . . . . . . . . . . . . . . . . . . 589
Instruction PREPARE TO COMMIT . . . . . . . . . . . . . . . 592
Instruction PRINT [T-SQL] . . . . . . . . . . . . . . . . . . . . 593
Instruction PUT [ESQL] . . . . . . . . . . . . . . . . . . . . . 594
Instruction RAISERROR [T-SQL] . . . . . . . . . . . . . . . . 596
Instruction READ [Interactive SQL] . . . . . . . . . . . . . . . 598
Instruction READTEXT [T-SQL] . . . . . . . . . . . . . . . . . 600
Instruction RELEASE SAVEPOINT . . . . . . . . . . . . . . . 601
Instruction REMOTE RESET [SQL Remote] . . . . . . . . . . 602
Instruction REMOTE JAVA . . . . . . . . . . . . . . . . . . . 603
Instruction REORGANIZE TABLE . . . . . . . . . . . . . . . 604
Instruction RESIGNAL . . . . . . . . . . . . . . . . . . . . . . 607
Instruction RESTORE DATABASE . . . . . . . . . . . . . . . 608
Instruction RESUME . . . . . . . . . . . . . . . . . . . . . . . 610
Instruction RETURN . . . . . . . . . . . . . . . . . . . . . . . 611
Instruction REVOKE . . . . . . . . . . . . . . . . . . . . . . . 613
Instruction REVOKE CONSOLIDATE [SQL Remote] . . . . . 616
Instruction REVOKE PUBLISH [SQL Remote] . . . . . . . . . 617
Instruction REVOKE REMOTE [SQL Remote] . . . . . . . . . 619
Instruction REVOKE REMOTE DBA [SQL Remote] . . . . . . 620
Instruction ROLLBACK . . . . . . . . . . . . . . . . . . . . . 621
Instruction ROLLBACK TO SAVEPOINT . . . . . . . . . . . . 622
Instruction ROLLBACK TRANSACTION . . . . . . . . . . . . 623
Instruction ROLLBACK TRIGGER . . . . . . . . . . . . . . . 624
Instruction SAVE TRANSACTION . . . . . . . . . . . . . . . 625
Instruction SAVEPOINT . . . . . . . . . . . . . . . . . . . . . 626
Instruction SELECT . . . . . . . . . . . . . . . . . . . . . . . 627
Instruction SET . . . . . . . . . . . . . . . . . . . . . . . . . . 635
Instruction SET [T-SQL] . . . . . . . . . . . . . . . . . . . . . 637
Instruction SET CONNECTION [Interactive SQL] [ESQL] . . 641
Instruction SET DESCRIPTOR [ESQL] . . . . . . . . . . . . . 642
Instruction SET OPTION . . . . . . . . . . . . . . . . . . . . 644
Instruction SET OPTION [Interactive SQL] . . . . . . . . . . . 647
Instruction SET REMOTE OPTION [SQL Remote] . . . . . . 648
Instruction SET SQLCA [ESQL] . . . . . . . . . . . . . . . . . 650
Instruction SETUSER . . . . . . . . . . . . . . . . . . . . . . 652
Instruction SIGNAL . . . . . . . . . . . . . . . . . . . . . . . . 654
Instruction START DATABASE [Interactive SQL] . . . . . . . . 655
Instruction START ENGINE [Interactive SQL] . . . . . . . . . 657
Instruction START JAVA . . . . . . . . . . . . . . . . . . . . . 658
Instruction START LOGGING [Interactive SQL] . . . . . . . . 659
Instruction START SUBSCRIPTION [SQL Remote] . . . . . . 660
Instruction START SYNCHRONIZATION DELETE [MobiLink] 662

vii
Instruction STOP DATABASE . . . . . . . . . . . . . . . . . . 664
Instruction STOP ENGINE . . . . . . . . . . . . . . . . . . . . 665
Instruction STOP JAVA . . . . . . . . . . . . . . . . . . . . . 666
Instruction STOP LOGGING [Interactive SQL] . . . . . . . . . 667
Instruction STOP SUBSCRIPTION [SQL Remote] . . . . . . 668
Instruction STOP SYNCHRONIZATION DELETE [MobiLink] . 669
Instruction SYNCHRONIZE SUBSCRIPTION [SQL Remote] 671
Instruction SYSTEM [Interactive SQL] . . . . . . . . . . . . . 672
Instruction TRIGGER EVENT . . . . . . . . . . . . . . . . . . 673
Instruction TRUNCATE TABLE . . . . . . . . . . . . . . . . . 674
Opration UNION . . . . . . . . . . . . . . . . . . . . . . . . 676
Instruction UNLOAD . . . . . . . . . . . . . . . . . . . . . . . 678
Instruction UNLOAD TABLE . . . . . . . . . . . . . . . . . . . 680
Instruction UPDATE . . . . . . . . . . . . . . . . . . . . . . . 683
Instruction UPDATE (positionne) [ESQL] [SP] . . . . . . . . 688
Instruction UPDATE [SQL Remote] . . . . . . . . . . . . . . . 690
Instruction VALIDATE CHECKSUM . . . . . . . . . . . . . . . 693
Instruction VALIDATE INDEX . . . . . . . . . . . . . . . . . . 694
Instruction VALIDATE TABLE . . . . . . . . . . . . . . . . . . 695
Instruction WAITFOR . . . . . . . . . . . . . . . . . . . . . . 697
Instruction WHENEVER [ESQL] . . . . . . . . . . . . . . . . 699
Instruction WHILE [T-SQL] . . . . . . . . . . . . . . . . . . . . 700
Instruction WRITETEXT [T-SQL] . . . . . . . . . . . . . . . . 701

II Objets systme 703


5 Tables systme 705
Table systme DUMMY . . . . . . . . . . . . . . . . . . . . . 708
Table systme RowGenerator . . . . . . . . . . . . . . . . . . 709
Table systme SYSARTICLE . . . . . . . . . . . . . . . . . . 710
Table systme SYSARTICLECOL . . . . . . . . . . . . . . . 711
Table systme SYSATTRIBUTE . . . . . . . . . . . . . . . . 712
Table systme SYSATTRIBUTENAME . . . . . . . . . . . . . 715
Table systme SYSCAPABILITY . . . . . . . . . . . . . . . . 716
Table systme SYSCAPABILITYNAME . . . . . . . . . . . . 717
Table systme SYSCHECK . . . . . . . . . . . . . . . . . . . 718
Table systme SYSCOLLATION . . . . . . . . . . . . . . . . 719
Table systme SYSCOLLATIONMAPPINGS . . . . . . . . . . 720
Table systme SYSCOLPERM . . . . . . . . . . . . . . . . . 721
Table systme SYSCOLSTAT . . . . . . . . . . . . . . . . . . 723
Table systme SYSCOLUMN . . . . . . . . . . . . . . . . . . 725
Table systme SYS CONSTRAINT . . . . . . . . . . . . . . . 727
Table systme SYSDOMAIN . . . . . . . . . . . . . . . . . . 729

viii
Table systme SYSEVENT . . . . . . . . . . . . . . . . . . . 730
Table systme SYSEVENTTYPE . . . . . . . . . . . . . . . . 732
Table systme SYSEXTENT . . . . . . . . . . . . . . . . . . 733
Table systme SYSEXTERNLOGINS . . . . . . . . . . . . . 734
Table systme SYSFILE . . . . . . . . . . . . . . . . . . . . . 735
Table systme SYSFKCOL . . . . . . . . . . . . . . . . . . . 736
Table systme SYSFOREIGNKEY . . . . . . . . . . . . . . . 737
Table systme SYSGROUP . . . . . . . . . . . . . . . . . . . 739
Table systme SYSHISTORY . . . . . . . . . . . . . . . . . . 740
Table systme SYSINDEX . . . . . . . . . . . . . . . . . . . . 742
Table systme SYSINFO (dconseille) . . . . . . . . . . . . 744
Table systme SYSIXCOL . . . . . . . . . . . . . . . . . . . . 746
Table systme SYSJAR . . . . . . . . . . . . . . . . . . . . . 747
Table systme SYSJARCOMPONENT . . . . . . . . . . . . . 748
Table systme SYSJAVACLASS . . . . . . . . . . . . . . . . 749
Table systme SYSLOGIN . . . . . . . . . . . . . . . . . . . 751
Table systme SYSOPTBLOCK . . . . . . . . . . . . . . . . 752
Table systme SYSOPTION . . . . . . . . . . . . . . . . . . . 753
Table systme SYSOPTJOINSTRATEGY . . . . . . . . . . . 754
Table systme SYSOPTORDER . . . . . . . . . . . . . . . . 755
Table systme SYSOPTQUANTIFIER . . . . . . . . . . . . . 756
Table systme SYSOPTREQUEST . . . . . . . . . . . . . . . 757
Table systme SYSOPTREWRITE . . . . . . . . . . . . . . . 758
Table systme SYSOPTSTAT . . . . . . . . . . . . . . . . . . 759
Table systme SYSPROCEDURE . . . . . . . . . . . . . . . 760
Table systme SYSPROCPARM . . . . . . . . . . . . . . . . 762
Table systme SYSPROCPERM . . . . . . . . . . . . . . . . 764
Table systme SYSPUBLICATION . . . . . . . . . . . . . . . 765
Table systme SYSREMOTEOPTION . . . . . . . . . . . . . 766
Table systme SYSREMOTEOPTIONTYPE . . . . . . . . . . 767
Table systme SYSREMOTETYPE . . . . . . . . . . . . . . . 768
Table systme SYSREMOTEUSER . . . . . . . . . . . . . . 769
Table systme SYSSCHEDULE . . . . . . . . . . . . . . . . 771
Table systme SYSSERVERS . . . . . . . . . . . . . . . . . 773
Table systme SYSSQLSERVERTYPE . . . . . . . . . . . . 774
Table systme SYSSUBSCRIPTION . . . . . . . . . . . . . . 775
Table systme SYSSYNC . . . . . . . . . . . . . . . . . . . . 776
Table systme SYSTABLE . . . . . . . . . . . . . . . . . . . . 778
Table systme SYSTABLEPERM . . . . . . . . . . . . . . . . 781
Table systme SYSTRIGGER . . . . . . . . . . . . . . . . . . 783
Table systme SYSTYPEMAP . . . . . . . . . . . . . . . . . 786
Table systme SYSUSERMESSAGES . . . . . . . . . . . . . 787
Table systme SYSUSERPERM . . . . . . . . . . . . . . . . 788

ix
Table systme SYSUSERTYPE . . . . . . . . . . . . . . . . . 790
Table systme SYSWEBSERVICE . . . . . . . . . . . . . . . 792
Autres tables systmes . . . . . . . . . . . . . . . . . . . . . 794

6 Vues systme 797


Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
Vues compatibles avec Transact-SQL . . . . . . . . . . . . . 809

7 Fonctions et procdures systme 813


Prsentation des procdures systme . . . . . . . . . . . . . 814
Procdures stockes systme et catalogue . . . . . . . . . . 815
Procdures systme stockes tendues . . . . . . . . . . . . 895
Procdures systme et catalogue Adaptive Server Enterprise 906

Index 911

x
Prface

Prsentation Ce manuel de rfrence fournit une description complte du langage SQL


utilis par Adaptive Server Anywhere. Il prsente galement les tables et
procdures systme dAdaptive Server Anywhere.
Alors que les autres manuels contiennent toutes les informations ncessaires
laccomplissement de tches bien prcises, celui-ci fournit une liste
exhaustive de la syntaxe SQL disponible et des objets systme.
A qui sadresse ce Ce manuel sadresse tous les utilisateurs dAdaptive Server Anywhere. Il
manuel ? comprend galement des informations destines aux utilisateurs de
MobiLink et de SQL Remote. Nous vous conseillons de lutiliser
conjointement aux autres manuels de la documentation.

xi
Documentation SQL Anywhere Studio
Ce manuel fait partie de la documentation SQL Anywhere Studio. Cette
section dcrit les diffrents manuels de la documentation et explique
comment les utiliser.
Documentation La documentation SQL Anywhere Studio est disponible sous plusieurs
SQL Anywhere Studio formes : format en ligne regroupant tous les manuels dans un fichier daide
unique, fichier PDF (un par manuel) et manuels imprims disponibles
lachat. La documentation est constitue des manuels suivants :
Prsentation de SQL Anywhere Studio Ce manuel prsente les
technologies de gestion et de synchronisation de base de donnes offertes
par SQL Anywhere Studio. Il inclut des didacticiels destins vous
initier aux diffrents composants de SQL Anywhere Studio.
Nouvelles fonctionnalits de SQL Anywhere Studio Ce manuel
sadresse aux utilisateurs des versions antrieures du logiciel. Il rpertorie
les nouvelles fonctionnalits de cette version et des versions prcdentes
du produit et dcrit les procdures de mise niveau.
Adaptive Server Anywhere - Guide dadministration Ce manuel traite
du lancement, de la gestion et de la configuration des bases de donnes et
des serveurs de base de donnes.
Adaptive Server Anywhere - Guide de lutilisateur SQL Ce manuel
explique comment concevoir et crer des bases de donnes, comment
importer, exporter et modifier des donnes, comment rcuprer des
donnes et construire des procdures stockes et des triggers.
Adaptive Server Anywhere - Manuel de rfrence SQL Ce manuel de
rfrence fournit une description complte du langage SQL utilis par
Adaptive Server Anywhere. Il prsente galement les tables et procdures
systme dAdaptive Server Anywhere.
Adaptive Server Anywhere - Guide de programmation Ce manuel
explique comment construire et dployer les applications de base de
donnes laide des langages de programmation C, C++ et Java. Les
utilisateurs de Visual Basic et PowerBuilder peuvent utiliser les interfaces
de programmation fournies par ces outils. Ce manuel dcrit galement le
fournisseur de donnes ADO.NET pour Adaptive Server Anywhere.
Adaptive Server Anywhere Agent dextension SNMP - Guide de
lutilisateur Ce manuel explique comment configurer lagent
dextension SNMP pour Adaptive Server Anywhere afin de pouvoir
lutiliser avec les applications de gestion SNMP des bases de donnes
Adaptive Server Anywhere.

xii
Adaptive Server Anywhere - Messages derreur Ce manuel fournit la
liste complte des messages derreur dAdaptive Server Anywhere, ainsi
que des informations de diagnostic.
SQL Anywhere Studio - Scurit Ce manuel fournit des informations
sur les fonctionnalits de scurit incluses dans les bases de donnes
Adaptive Server Anywhere. Dans le cadre des critres dvaluation de la
scurit des systmes informatiques (TCSEC, Trusted Computer System
Evaluation Criteria), le gouvernement amricain a attribu la certification
C2 Adaptive Server Anywhere 7.0. Ce manuel sadresse plus
particulirement ceux qui souhaitent utiliser la version actuelle
dAdaptive Server Anywhere conformment aux exigences de
lenvironnement certifi C2.

MobiLink - Guide dadministration Ce manuel dcrit lutilisation du


systme de synchronisation des donnes MobiLink pour linformatique
mobile, qui permet le partage des donnes entre une base Oracle, Sybase,
Microsoft ou IBM unique et plusieurs bases de donnes Adaptive Server
Anywhere ou UltraLite.

MobiLink - Clients Ce manuel explique comment configurer et


synchroniser les bases de donnes distantes Adaptive Server Anywhere et
UltraLite.
Synchronisation MobiLink excute par le serveur - Guide de
lutilisateur Ce manuel prsente la synchronisation MobiLink excute
par le serveur, une fonctionnalit MobiLink qui permet dexcuter la
synchronisation partir dune base de donnes consolide.

MobiLink - Didacticiels Ce manuel comprend plusieurs didacticiels qui


vous apprennent configurer et excuter des applications MobiLink.

QAnywhere - Guide de lutilisateur Ce manuel dcrit la plate-forme de


messagerie MobiLink QAnywhere qui permet le dveloppement et le
dploiement dapplications de messagerie pour les clients mobiles et sans
fil, et pour les postes de travail et les ordinateurs portables traditionnels.

Pilotes ODBC pour MobiLink et laccs aux donnes distantes Ce


manuel explique comment configurer les pilotes ODBC pour accder aux
bases de donnes consolides autres quAdaptive Server Anywhere
partir du serveur de synchronisation MobiLink et de laccs aux donnes
distantes Adaptive Server Anywhere.
SQL Remote - Guide de lutilisateur Ce manuel dcrit tous les aspects
du systme de rplication des donnes SQL Remote pour linformatique
mobile. Ce systme permet le partage des donnes entre une seule base

xiii
Adaptive Server Anywhere ou Adaptive Server Enterprise et plusieurs
bases de donnes Adaptive Server Anywhere via un lien indirect tel que
la messagerie lectronique ou le transfert de fichiers.
SQL Anywhere Studio - Aide Ce manuel inclut laide contextuelle de
Sybase Central, dInteractive SQL et dautres outils graphiques. Il nest
pas fourni avec la documentation imprime.
Base de donnes UltraLite - Guide de lutilisateur Ce manuel
sadresse tous les dveloppeurs UltraLite. Il prsente le systme de base
de donnes UltraLite et fournit des informations communes toutes les
interfaces de programmation UltraLite.

Guides des interfaces UltraLite Un manuel est fourni pour chacune


des interfaces de programmation UltraLite. Certaines de ces interfaces
sont fournies en tant que composants UltraLite pour le dveloppement
dapplications rapide, et dautres sous forme dinterfaces statiques pour le
dveloppement en C, C++ et Java.
PowerAMC et InfoMaker disposent galement de leur propre documentation
en ligne.
Formats de la La documentation de SQL Anywhere Studio se prsente sous les formats
documentation suivants :
Documentation en ligne La documentation en ligne comprend toute la
documentation de SQL Anywhere Studio, y compris les manuels et laide
contextuelle des outils SQL Anywhere. Elle est mise jour chaque
version de maintenance du produit et constitue la source de
documentation la plus complte et la plus rcente.
Pour accder la documentation en ligne sous les systmes
dexploitation Windows, choisissez Dmarrer Programmes
SQL Anywhere 9 Documentation en ligne. Vous pouvez explorer la
documentation en ligne partir du sommaire, de lindex et laide de la
fonction de recherche de laide HTML dans le volet gauche ou au moyen
des liens et des menus dans le volet droit.
Pour accder la documentation en ligne sous les systmes
dexploitation UNIX, reportez-vous la documentation HTML de votre
installation SQL Anywhere.

Documentation au format PDF Les manuels SQL Anywhere sont


fournis au format PDF et se lisent avec Adobe Acrobat Reader.
La documentation au format PDF est accessible partir des manuels en
ligne ou depuis le menu Dmarrer de Windows.

xiv
Manuels imprims Lensemble des manuels est disponible auprs de
Sybase ou la boutique en ligne de Sybase, leShop, ladresse
http://eshop.sybase.com/eshop/documentation .

xv
Conventions
Cette section dcrit les conventions syntaxiques, typographiques et
graphiques utilises dans ce manuel.
Conventions syntaxiques Les exemples de syntaxe SQL sappuient sur les conventions suivantes :

Mots-cls Tous les mots-cls SQL sont indiqus en majuscules. Par


exemple :
ALTER TABLE [ propritaire.]nom_table

Marques de rservation Les lments remplacer par des expressions


ou des identificateurs appropris apparaissent en italique. Par exemple :
ALTER TABLE [ propritaire.]nom_table

Elments rptitifs Dans une liste contenant des lments qui se


rptent, le nom dun lment de la liste est suivi de points de suspension
(. . .), comme les termes contrainte_colonne dans lexemple ci-dessous.
ADD dfinition_colonne [ contrainte_colonne, . . . ]

Une liste peut comprendre un ou plusieurs lments. Dans ce dernier cas,


les lments sont spars les uns des autres par une virgule.

Elments facultatifs Les lments facultatifs dune instruction sont


placs entre crochets.
RELEASE SAVEPOINT [nom_point_de_sauvegarde]

Les crochets indiquent que le paramtre nom_point_de_sauvegarde est


facultatif. Les crochets ne doivent pas tre saisis.

Options Lorsquun seul lment de la liste (ou aucun) doit tre dclar,
les lments sont spars par des barres verticales et la liste est place
entre crochets.
[ ASC | DESC ]

Par exemple, vous pouvez choisir le paramtre ASC ou DESC, ou aucun


des deux. Les crochets ne doivent pas tre saisis.
Options obligatoires Lorsque vous devez obligatoirement slectionner
lune des options, les choix possibles sont spars par une barre et placs
entre accolades.
[ QUOTES { ON | OFF } ]

Si loption QUOTES est utilise, ON ou OFF doit galement tre


spcifi. Les crochets et les accolades ne doivent pas tre saisis.

xvi
Icnes Les icnes suivantes sont utilises dans cette documentation :
Application cliente

Serveur de base de donnes, par exemple Sybase Adaptive Server


Anywhere

Base de donnes. Dans certains diagrammes labors, licne peut servir


reprsenter la fois la base de donnes et le serveur qui la gre.

Middleware de rplication ou de synchronisation. Ils participent au


partage de donnes entre les bases. Exemplesa : serveur de
synchronisation MobiLink, agent de message SQL Remote.

Interface de programmation

API

xvii
La base de donnes exemple Adaptive Server
Anywhere
De nombreux exemples de la documentation font appel la base de donnes
exemple Adaptive Server Anywhere.
La base de donnes exemple est stocke dans un fichier appel asademo.db
situ dans votre rpertoire SQL Anywhere.
Cette base de donnes reprsente une petite socit. Elle contient des
informations concernant la socit (employs, services et finances), les
produits et les ventes (commandes, clients et contacts). Toutes les
informations contenues dans la base de donnes relvent de la pure fiction.
Le schma suivant illustre les tables de la base de donnes exemple et leurs
relations.

asademo.db

product sales_order_items Employee

id integer <pk> id integer <pk,fk> emp_id integer <pk>


name char(15) line_id smallint <pk> manager_id integer
description char(30) prod_id integer <fk> emp_fname char(20)
size char(18) quantity integer emp_lname char(20)
id = prod_id
color char(6) ship_date date dept_id integer <fk>
quantity integer street char(40)
unit_price numeric (15,2) emp_id = sales_rep city char(20)
id = id state char(4)
zip_code char(9)
phone char(10)
sales_order status char(1)
customer ss_number char(11)
id integer <pk> salary numeric(20,3)
id integer <pk> cust_id integer <fk> start_date date
fname char(15) order_date date termination_date date
lname char(20) fin_code_id char(2) <fk> birth_date date
address char(35) bene_health_ins char(1)
id = cust_id region char(7)
city char(20) sales_rep integer <fk> bene_life_ins char(1)
state char(2) bene_day_care char(1)
zip char(10) sex char(1)
phone char(20) code = fin_code_id
company_name char(35)

fin_code
dept_id = dept_id
contact code char(2) <pk>
type char(10) emp_id = dept_head_id
id integer <pk> description char(50)
last_name char(15)
first_name char(15)
title char(2) code = code
street char(30) department
city char(20)
state char(2) fin_data dept_id integer <pk>
zip char(5) dept_name char(40)
phone char(10) year char(4) <pk> dept_head_id integer <fk>
fax char(10) quarter char(2) <pk>
code char(2) <pk,fk>
amount numeric(9)

xviii
Observations et sources dinformations
complmentaires
Si vous avez des observations sur le contenu de cette documentation et sur le
logiciel, nous vous serions reconnaissants de nous en faire part.
Vous pouvez nous les adresser par lintermdiaire des forums (newsgroups)
mis en place pour discuter des technologies de SQL Anywhere. Ces forums
sont accessibles sur le serveur forums.sybase.com.
Les forums se dclinent comme suit :
sybase.public.sqlanywhere.general

sybase.public.sqlanywhere.linux
sybase.public.sqlanywhere.mobilink
sybase.public.sqlanywhere.product_futures_discussion

sybase.public.sqlanywhere.replication
sybase.public.sqlanywhere.ultralite
ianywhere.public.sqlanywhere.qanywhere

Ddit de responsabilit pour les forums


La socit iAnywhere Solutions nest nullement tenue de fournir des
solutions, des informations ou des avis concernant ses forums. Elle nest
pas dans lobligation de fournir un service supplmentaire autre que celui
de loprateur systme prvu pour contrler le service ni de garantir son
fonctionnement ainsi que sa disponibilit.
Les conseillers techniques diAnywhere Solutions, ainsi que dautres
catgories de personnel participent lexploitation du forum lorsque leurs
disponibilits le leur permettent. Ils apportent leur aide de manire bnvole
et ne peuvent pas tre disponibles rgulirement pour fournir des solutions
ou des informations. Leur aptitude fournir une aide dpend de leur charge
de travail.
Vous pouvez envoyer vos commentaires et suggestions par email lquipe
charge de la documentation SQL Anywhere ladresse
iasdoc@ianywhere.com. Bien que nous ne soyons pas tenus de rpondre aux
emails envoys cette adresse, soyez assur que vos suggestions seront lues
avec grand intrt.

xix
xx
P REMIRE PARTIE

SQL

Cette partie dcrit le langage SQL utilis par Adaptive Server Anywhere,
notamment les types de donnes, les fonctions et les instructions.
CHAPITRE 1

Elments de langage SQL

Prsentation Ce chapitre dcrit les lments et les conventions du langage SQL.


Sommaire Sujet : page

Mots-cls 4

Identificateurs 8

Chanes 10

Oprateurs 12

Expressions 17
Conditions de recherche 24

Valeurs spciales 35

Variables 40

Commentaires 51

Valeur NULL 52

3
Mots-cls
Chaque instruction SQL contient un ou plusieurs mots-cls. SQL ne fait pas
la distinction majuscules/minuscules dans les mots-cls, mais dans ce
manuel, les mots-cls sont signals en majuscules.
Par exemple, dans linstruction suivante, SELECT et FROM sont des
mots-cls :
SELECT *
FROM employee

Les instructions suivantes sont identiques la prcdente :


Select *
From employee
select * from employee
sELECT * FRoM employee

Certains mots-cls ne peuvent pas tre utiliss comme identificateurs sils ne


sont pas mis entre guillemets. Ce sont des mots rservs. Dautres mots-cls,
tels que DBA, nont pas besoin de guillemets et ne sont pas des mots
rservs.

Mots rservs
Certains mots-cls du langage SQL sont aussi des mots rservs. Pour
utiliser un mot rserv dans une instruction SQL comme identificateur, vous
devez le mettre entre guillemets. De nombreux mots-cls (mais pas tous) qui
apparaissent dans des instructions SQL sont des mots rservs. Par exemple,
vous devez utiliser la syntaxe ci-dessous pour extraire le contenu dune table
nomme SELECT.
SELECT *
FROM "SELECT"

SQL ne faisant pas la distinction majuscules/minuscules dans les mots-cls,


chacun des mots suivants peut figurer en majuscules, en minuscules ou les
deux. Toutes les chanes qui se distinguent de lun des mots suivants
seulement par les majuscules sont des mots rservs.
Si vous utilisez Embedded SQL, vous pouvez utiliser la fonction
bibliothque de base de donnes SQL_needs_quotes pour dterminer si une
chane requiert ou non des guillemets. Une chane doit tre encadre de
guillemets sil sagit dun mot rserv ou si elle contient un caractre non
admis dans un identificateur.
Dans Adaptive Server Anywhere, les mots-cls SQL sont les suivants :

4
Chapitre 1. Elments de langage SQL

Mot rserv Mot rserv Mot rserv Mot rserv

add all alter and

any as asc backup

begin between bigint binary

bit bottom break by


call capability cascade case

cast char char_convert character

check checkpoint close comment

commit conflict connect constraint

contains continue convert create


cross cube current current_-
timestamp

current_user cursor date dbspace

deallocate dec decimal declare

default delete deleting desc

distinct do double drop


dynamic else elseif encrypted

end endif escape except

exception exec execute existing

exists externlogin fetch first

float for force foreign

forward from full goto

grant group having holdlock

identified if in index

index_lparen inner inout insensitive


insert inserting install instead

int integer integrated intersect

into iq is isolation

join key lateral left

5
Mot rserv Mot rserv Mot rserv Mot rserv

like lock login long

match membership message mode

modify natural new no

noholdlock not notify null


numeric of off on

open option options or

order others out outer

over passthrough precision prepare

primary print privileges proc


procedure publication raiserror readtext

real reference references release

remote remove rename reorganize

resource restore restrict return

revoke right rollback rollup

save savepoint scroll select

sensitive session set setuser

share smallint some sqlcode

sqlstate start stop subtrans


subtransaction synchronize syntax_error table

temporary then time timestamp

tinyint to top tran

trigger truncate tsequal unbounded

union unique uniqueidentifier unknown

unsigned update updating user

using validate values varbinary

varchar variable varying view

wait waitfor when where


while window with with_cube

6
Chapitre 1. Elments de langage SQL

Mot rserv Mot rserv Mot rserv Mot rserv

with_lparen with_rollup within work

writetext

7
Identificateurs
Fonction Les identificateurs sont des noms dobjet de la base, comme des ID
utilisateur, des tables et des colonnes.
Description Les identificateurs ne doivent pas dpasser 128 octets. Ils doivent tre placs
entre guillemets ou entre crochets si lune des conditions suivantes est vraie :
Lidentificateur contient des espaces.
Le premier caractre de lidentificateur nest pas alphabtique (voir
dfinition ci-aprs).
Lidentificateur contient un mot rserv.
Lidentificateur comporte des caractres non alphanumriques.
Les caractres alphabtiques sont les lettres de lalphabet, auxquelles
sajoutent le tiret bas (_), larrobas (@), le dise (#) et le symbole du
dollar ($). La squence de classement de la base indique les caractres qui
sont considrs comme alphabtiques ou comme numriques.
Les caractres suivants ne sont pas autoriss dans les identificateurs :

Guillemets
Caractres de contrle (tout caractre infrieur 0x20)
Doubles barres obliques inverses

Dans un identificateur, vous pouvez utiliser une barre oblique inverse


uniquement en guise de caractre dchappement.
Si loption de base de donnes QUOTED_IDENTIFIER est dfinie OFF,
les guillemets servent dlimiter les chanes SQL et ne peuvent donc pas
tre utiliss pour les identificateurs. Toutefois, vous pouvez toujours utiliser
des crochets pour dlimiter les identificateurs, quelle que soit la dfinition de
QUOTED_IDENTIFIER. Par dfaut, loption QUOTED_IDENTIFIER est
dfinie sur OFF pour les connexions Open Client et jConnect ; dans les
autres cas, elle est dfinie par dfaut sur ON.
Vous pouvez reprsenter une apostrophe dans un identificateur en la faisant
suivre dune seconde apostrophe.
Voir aussi Pour obtenir la liste complte des mots rservs, reportez-vous la
section Mots rservs la page 4.
Pour plus dinformations sur QUOTED_IDENTIFIER, reportez-vous la
section Option QUOTED_IDENTIFIER [compatibilit] [ASA - Guide
dadministration, page 746].

8
Chapitre 1. Elments de langage SQL

Exemples Voici quelques exemples didentificateurs corrects :


Surname
"Surname"
[Surname]
SomeBigName
"Client Number"

9
Chanes
Les chanes ont les types suivants :
chane littrale
expressions avec le type de donnes CHAR ou VARCHAR.
Une expression avec un type de donnes CHAR peut tre une fonction
intgre ou dfinie par lutilisateur, ou encore une des nombreuses sortes
dexpression disponibles.
Pour plus dinformations sur les expressions, reportez-vous la section
Expressions la page 17.
Une chane littrale est une suite de caractres mise entre apostrophes
(guillemets simples). Une variable SQL de type caractre peut contenir une
chane. Lexemple suivant est une chane littrale :
This is a string.

Caractres spciaux Vous reprsentez un caractre spcial dans une chane par des squences
dans les chanes dchappement, comme suit :
Pour reprsenter une apostrophe lintrieur dune chane, utilisez deux
apostrophes. Par exemple :
Johns database

Pour reprsenter un caractre de nouvelle ligne, employez une barre


oblique inverse suivie dun n (\n). Par exemple :
First line:\nSecond line:

Pour reprsenter un caractre de barre oblique inverse, utilisez deux


barres obliques inverses (\\). Par exemple :
c:\\temp

Vous pouvez utiliser une squence dchappement hexadcimale pour


reprsenter nimporte quel caractre, quil soit imprimable ou non. Une
squence dchappement hexadcimale est reprsente par un x suivi de
deux chiffres hexadcimaux (\x6d reprsente la lettre m, Par exemple).
Par exemple :
\x00\x01\x02\x03

Voir aussi Pour plus dinformations sur le traitement des chanes dans des
instructions SQL construites dynamiquement, reportez-vous la section
Instruction EXECUTE IMMEDIATE [SP] la page 495.

10
Chapitre 1. Elments de langage SQL

Normes et compatibilit Pour assurer la compatibilit avec Adaptive Server Enterprise, vous pouvez
dfinir loption de base de donnes QUOTED_IDENTIFIER OFF. Avec ce
paramtre, vous pouvez aussi utiliser des guillemets pour marquer le dbut
et la fin des chanes. Par dfaut, cette option est dfinie ON.
Pour plus dinformations sur QUOTED_IDENTIFIER, reportez-vous
la section Option QUOTED_IDENTIFIER [compatibilit] [ASA - Guide
dadministration, page 746].

11
Oprateurs
Cette section dcrit les oprateurs arithmtiques, de chane et binaires. Pour
plus dinformations sur les oprateurs de comparaison, reportez-vous la
section Conditions de recherche la page 24.
Lordre de priorit normal des oprations sapplique. Les expressions entre
parenthses sont rsolues en premier, suivies de la multiplication et de la
division, elles-mmes suivies de laddition et de la soustraction. La
concatnation de chanes seffectue aprs laddition et la soustraction.
Pour plus dinformations, reportez-vous la section Ordre de priorit
des oprateurs la page 16.

Oprateurs de comparaison
Les conditions de comparaison doivent respecter la syntaxe suivante :
expression compar_ expression

o compare_ reprsente un oprateur de comparaison. Les oprateurs de


comparaison suivants sont fournis :

Oprateur Description

= Egal

> Suprieur

< Infrieur

>= Suprieur ou gal

<= Infrieur ou gal

!= Diffrent de
<> Diffrent de

!> Non suprieur

!< Non infrieur

Distinction majuscules/ minuscules


Les comparaisons de chanes seffectuent sans distinction majus-
cules/minuscules, sauf si la base de donnes a t cre avec cette dis-
tinction.
Normes et compatibilit

12
Chapitre 1. Elments de langage SQL

Blancs en fin de chane Dans Adaptive Server Enterprise, les blancs


au dbut et la fin des donnes de type caractre sont ignors lors des
comparaisons. Le comportement dAdaptive Server Anywhere lors de
comparaisons de chane est contrl par loption de ligne de commande
-b dfinie au moment de la cration de la base.
Pour plus dinformations sur le remplissage des chanes laide de
blancs, reportez-vous la section Options de lutilitaire de cration
dune base de donnes [ASA - Guide dadministration, page 579].
Distinction majuscules/minuscules Par dfaut, les bases de donnes
Adaptive Server Anywhere ne distinguent pas les majuscules des
minuscules, contrairement aux bases de donnes Adaptive Server
Enterprise. Les comparaisons sont menes bien avec le mme respect
de la casse que les bases de donnes sur lesquelles elles sexcutent. Vous
pouvez contrler la distinction majuscules/minuscules dans Adaptive
Server Anywhere laide de loption de ligne de commande c, lors de la
cration de la base de donnes.
Pour plus dinformations sur la distinction majuscules/minuscules
dans le cadre des comparaisons de chanes, reportez-vous la section
Options de lutilitaire de cration dune base de donnes [ASA - Guide
dadministration, page 579].

Oprateurs logiques
Les oprateurs AND, OR et NOT permettent de combiner des conditions de
recherche.
Combinaison de conditions laide de loprateur AND :
condition1 AND condition2

La condition combine est vraie (TRUE) si les deux conditions le sont


galement ; elle est fausse (FALSE) si une des condition est fausse ; elle est
non dtermine (UNKNOWN) dans les autres cas.
Combinaison de conditions laide de loprateur OR :
condition1 OR condition2

La condition combine est vraie (TRUE) si lune des conditions est vraie ;
elle est fausse si les deux conditions sont fausses ; elle est non dtermine
(UNKNOWN) dans les autres cas.
Pour loprateur NOT, la syntaxe est la suivante :
NOT condition

13
La condition NOT est TRUE si condition est FALSE, FALSE si condition
est TRUE, et UNKNOWN si condition est UNKNOWN.
Loprateur IS permet de tester une valeur logique. La syntaxe est la
suivante :
expression IS [ NOT ] valeur_vrit

La condition est TRUE si expression renvoie la valeur_vrit fournie, qui


doit tre TRUE, FALSE, UNKNOWN ou NULL. Sinon, la condition est
fausse (FALSE).
Pour plus dinformations, reportez-vous la section Logique ternaire
la page 31.
Normes et compatibilit Les oprateurs logiques sont compatibles entre Adaptive Server
Anywhere et Adaptive Server Enterprise.

Oprateurs arithmtiques
expression + expression Addition. Si la valeur de lune des deux
expressions est NULL, le rsultat gnr est NULL.
expression expression Soustraction. Si la valeur de lune des deux
expressions est NULL, le rsultat gnr est NULL.
expression Ngation. Si la valeur de lexpression est NULL, le rsultat
gnr est NULL.
expression * expression Multiplication. Si la valeur de lune des deux
expressions est NULL, le rsultat gnr est NULL.
expression / expression Division. Si la valeur de lune des deux
expressions est NULL ou si la seconde expression est gale 0 (zro), le
rsultat gnr est NULL.
expression % expression Modulo. Calcule la valeur du reste obtenu par
la division de deux nombres entiers. Par exemple, 21 % 11 = 10 car 21 divis
par 11 gale 1, et il reste 10.
Normes et compatibilit Modulo Loprateur % ne peut tre utilis dans Adaptive Server
Anywhere que si loption PERCENT_AS_COMMENT est rgle sur
OFF. Par dfaut, cette option est sur ON.

Oprateurs de type chane


expression || expression Concatnation de chanes (deux barres
verticales). Si la valeur de lune des deux expressions est NULL, elle est
traite comme une chane vide lors de la concatnation.

14
Chapitre 1. Elments de langage SQL

expression + expression Concatnation de chanes (signe +). Lorsque


vous faites appel loprateur de concatnation +, assurez-vous que les
oprandes sont explicitement dfinis en tant que chanes de caractres plutt
que de compter sur une conversion de donnes implicite.
Par exemple, la requte suivante renvoie la valeur dentier 579:
SELECT 123 + 456

alors que la requte ci-dessous renvoie la chane de caractres 123456:


SELECT 123 + 456

Vous pouvez utiliser la fonction CAST ou CONVERT pour convertir


explicitement les types de donnes.
Normes et compatibilit SQL/92 Loprateur || reprsente loprateur de concatnation de
chanes sous SQL/92.
Sybase Adaptive Server Enterprise admet loprateur +.
Loprateur de concatnation || nest pas support par Adaptive Server
Enterprise.

Oprateurs binaires
Il est possible dutiliser les oprateurs suivants sur des donnes de type
integer dans Adaptive Server Anywhere et Adaptive Server Enterprise.

Opra- Description
teur

& AND binaire

| OR binaire

^ OR exclusif binaire

~ NOT binaire
Les oprateurs binaires &, | et ~ ne sont pas interchangeables avec les
oprateurs logiques AND, OR et NOT.
Exemple Linstruction suivante slectionne les lignes sur lesquelles les bits corrects
sont dfinis.
SELECT *
FROM tableA
WHERE (options & 0x0101) <> 0

15
Oprateurs de jointure
Les oprateurs Transact-SQL de jointure externe *= et =* sont pris en charge
par Adaptive Server Anywhere, en plus de la syntaxe SQL/92 qui utilise une
expression de table dans la clause FROM.

Ordre de priorit des oprateurs


La priorit des oprateurs dans les expressions est la suivante : les oprateurs
en dbut de liste sont valus avant ceux de la fin de la liste.
1. oprateurs unaires (qui ne ncessitent quun seul oprande)
2. &, | , ^, ~
3. *, /, %
4. +, -

5. ||
6. not

7. and
8. or
Lorsquune expression comporte plusieurs oprateurs, il est recommand
dindiquer explicitement leur ordre de priorit laide de parenthses, plutt
que de tabler sur un ordre de priorit identique pour Adaptive Server
Enterprise et Adaptive Server Anywhere.

16
Chapitre 1. Elments de langage SQL

Expressions
Syntaxe Expression :
expression_cas
| constante
| [nom_corrlation.]nom_colonne
| - expression
| expression oprateur expression
| ( expression )
| nom_fonction ( expression, . . . )
| expression_if
| valeur spciale
| ( sous_requte )
| nom_variable
Paramtres expression_cas :
CASE expression
WHEN expression
THEN expression,. . .
[ ELSE expression ]
END
autre forme dexpression_cas :
CASE
WHEN condition_recherche
THEN expression,. . .
[ ELSE expression ]
END
constante:
entier | nombre | chane | hte-variable
valeur_spciale :
CURRENT { DATE | TIME | TIMESTAMP }
| NULL
| SQLCODE
| SQLSTATE
| USER
expression_if :
IF condition
THEN expression
[ ELSE expression ]
ENDIF
oprateur :
{ + | - | * | / | || | % }

Utilisation Tout contexte.

17
Autorisation Vous devez tre connect la base de donnes.
Effets secondaires Aucun
Description Les expressions sont formes partir de plusieurs types diffrents
dlments. Ces conditions sont dveloppes dans les sections ci-aprs.
Pour plus dinformations sur les fonctions, reportez-vous la section
Fonctions SQL la page 95. Pour plus dinformations sur les variables,
reportez-vous la section Variables la page 40.
Voir aussi Constantes dans des expressions la page 18
Valeurs spciales la page 35
Noms de colonnes dans des expressions la page 18
Fonctions SQL la page 95
Sous-requtes dans des expressions la page 19
Conditions de recherche la page 24
Types de donnes SQL la page 55
Variables la page 40
Expressions CASE la page 20
Normes et compatibilit Adaptive Server Enterprise nadmet pas la condition IF.
Pour plus dinformations sur les diffrences, reportez-vous aux
descriptions de chaque classe dexpression dans les sections suivantes.

Constantes dans des expressions


Les constantes sont des nombres ou des littraux de chane. Quand elles sont
exprimes sous forme de chanes, les constantes figurent entre apostrophes
(apostrophe). Toute apostrophe incluse dans une chane doit tre double.

Noms de colonnes dans des expressions


Un nom de colonne est un identificateur prcd dun alias facultatif. (Un
alias est gnralement un nom de table. Pour plus dinformations sur les
alias, reportez-vous la section Clause FROM la page 511.) Un nom de
colonne contenant des caractres autres que des lettres, des chiffres et des
tirets bas doit tre encadr par des guillemets (). Voici plusieurs exemples
de noms de colonne corrects :
employee.name
address
"date hired"
"salary"."date paid"

Pour plus dinformations sur les identificateurs, reportez-vous la


section Identificateurs la page 8.

18
Chapitre 1. Elments de langage SQL

Sous-requtes dans des expressions


Une sous-requte est une instruction SELECT imbrique dans une autre
instruction SELECT, INSERT, UPDATE ou DELETE, ou dans une autre
sous-requte.
Linstruction SELECT doit figurer entre parenthses et contenir une unique
option de liste de slection. Utilise comme expression, une sous-requte ne
peut en gnral renvoyer quune seule valeur.
Une sous-requte sutilise partout o un nom de colonne peut tre employ.
Par exemple, il est possible dutiliser une sous-requte dans la liste de
slection dune autre instruction SELECT.
Pour plus dinformations sur les sous-requtes, reportez-vous la
section Sous-requtes dans des conditions de recherche la page 25.

Expressions IF
La syntaxe de linstruction IF est la suivante :
IF condition
THEN expression1
[ ELSE expression2 ]
ENDIF
Cette expression renvoie ce qui suit :
Si condition est TRUE, lexpression IF renvoie expression1.
Si condition est FALSE, lexpression IF renvoie expression2.
Si condition est FALSE et quil ny a pas dexpression2, lexpression IF
renvoie la valeur NULL.

Si condition est UNKNOWN, lexpression IF renvoie la valeur NULL


Pour plus dinformations sur les conditions TRUE, FALSE et
UNKNOWN, reportez-vous Valeur NULL la page 52 et Conditions de
recherche la page 24.

Linstruction IF est diffrente de lexpression IF


Ne confondez pas la syntaxe de lexpression IF avec celle de linstruc-
tion IF.
Pour plus dinformations sur linstruction IF, reportez-vous la section
Instruction IF la page 540.

19
Expressions CASE
Lexpression CASE fournit des expressions SQL conditionnelles. Les
expressions CASE peuvent tre utilises en lieu et place dune expression.
La syntaxe de linstruction CASE est la suivante :
CASE expression
WHEN expression
THEN expression, . . .
[ ELSE expression ]
END
Si lexpression qui suit linstruction CASE est identique lexpression qui
suit linstruction WHEN, lexpression qui suit linstruction THEN est
renvoye. Sinon, cest lexpression qui suit linstruction ELSE qui est
renvoye, si elle existe.
Par exemple, les lignes de code ci-dessous utilisent une expression CASE
comme deuxime clause de linstruction SELECT.
SELECT id,
( CASE name
WHEN Tee Shirt then Shirt
WHEN Sweatshirt then Shirt
WHEN Baseball Cap then Hat
ELSE Unknown
END ) as Type
FROM "DBA".Product

Il existe une autre syntaxe possible :


CASE
WHEN condition_recherche
THEN expression, . . .
[ ELSE expression ]
END
Si la condition de recherche qui suit linstruction WHEN est satisfaite,
lexpression qui suit linstruction THEN est renvoye. Sinon, cest
lexpression qui suit linstruction ELSE qui est renvoye, si elle existe.
Par exemple, linstruction suivante utilise une expression case comme
troisime clause dune instruction SELECT pour associer une chane une
condition de recherche.

20
Chapitre 1. Elments de langage SQL

SELECT id, name,


( CASE
WHEN name=Tee Shirt then Sale
WHEN quantity >= 50 then Big Sale
ELSE Regular price
END ) as Type
FROM "DBA".Product

Fonction NULLIF pour La fonction NULLIF permet une criture abrge de certaines instructions
expressions CASE CASE. La syntaxe de la condition NULLIF est la suivante :
abrges
NULLIF ( expression-1, expression-2 )

NULLIF compare les valeurs des deux expressions. Si elles sont identiques,
la fonction NULLIF renvoie la valeur NULL. Sinon, elle renvoie la premire
expression.

Linstruction CASE est diffrente de lexpression CASE


Ne confondez pas la syntaxe de lexpression CASE avec celle de linstruc-
tion CASE.
Pour plus dinformations sur linstruction CASE, reportez-vous la section
Instruction CASE la page 332.

Compatibilit des expressions


Les tableaux ci-dessous dcrivent la compatibilit des expressions et
constantes entre Adaptive Server Enterprise et Adaptive Server Anywhere.
Ils sont fournis titre indicatif et mme si Les deux SGBD est indiqu, cela
ne garantit pas que lexpression a les mmes effets dans toutes les
circonstances dutilisation. Pour une description plus dtaille, reportez-vous
la section traitant de lexpression concerne dans la documentation Adaptive
Server Anywhere et celle dAdaptive Server Enterprise.
Dans la table ci-dessous, expr reprsente une expression et op, un oprateur.

Expression Support

constante Les deux SGBD

nom de colonne Les deux SGBD


nom de variable Les deux SGBD

fonction (expr) Les deux SGBD

- expr Les deux SGBD

expr op expr Les deux SGBD

21
Expression Support

( expr ) Les deux SGBD

( sous-requte ) Les deux SGBD

expression_if Exclusivit Adaptive Server Anywhere

Constante Support

entier Les deux SGBD


nombre Les deux SGBD

chane Les deux SGBD

constante spciale Les deux SGBD

variable_hte Adaptive Server Anywhere


Interprtation par dfaut Par dfaut, Adaptive Server Enterprise et Adaptive Server Anywhere
des chanes dlimites dfinissent diffremment les chanes dlimites : cest--dire les chanes qui
sont places entre apostrophes ou guillemets.
Adaptive Server Anywhere respecte la norme SQL/92 : les chanes
dlimites par des apostrophes sont considres comme des expressions
constantes et celles entre guillemets, comme des identificateurs dlimits
(noms dobjet de base de donnes). Adaptive Server Enterprise utilise la
convention suivante : les chanes entre guillemets sont des constantes, tandis
que les identificateurs dlimits, qui ne sont pas autoriss par dfaut, sont
traits comme des chanes.

Option quoted_identifier

Adaptive Server Enterprise et Adaptive Server Anywhere proposent une


option quoted_identifier qui permet de changer linterprtation des chanes
dlimites. Par dfaut, loption quoted_identifier est dfinie OFF dans
Adaptive Server Enterprise, et ON dans Adaptive Server Anywhere.
Vous ne pouvez pas utiliser de mots rservs SQL comme identificateurs si
loption quoted_identifier est OFF.
Pour obtenir la liste complte des mots rservs, reportez-vous Mots
rservs la page 4.
Activation de loption La plupart des options de connexion Adaptive Server Enterprise de
linstruction Transact-SQL SET ne sont pas supportes, lexception de
quoted_identifier.
Linstruction suivante, dans Adaptive Server Anywhere ou dans Adaptive

22
Chapitre 1. Elments de langage SQL

Server Enterprise, permet dactiver (valeur ON) loption quoted_identifier :


SET quoted_identifier ON

Avec loption quoted_identifier active (valeur ON), Adaptive Server


Enterprise permet de dlimiter les noms de table, de vue et de colonne par
des guillemets. Il est impossible de dlimiter les noms des autres objets dans
Adaptive Server Enterprise.
Linstruction suivante, dans Adaptive Server Anywhere ou dans Adaptive
Server Enterprise, permet de dsactiver (valeur OFF) loption
quoted_identifier :
SET quoted_identifier OFF

Compatibilit de Du moment que loption quoted_identifier est fixe la mme valeur dans
linterprtation des Adaptive Server Anywhere et dans Adaptive Server Enterprise, il est
chanes dlimites possible dutiliser dans ces deux SGBD la norme SQL/92 ou la convention
Transact-SQL par dfaut.
Exemples Si vous choisissez dactiver loption quoted_identifier (par dfaut dans
Adaptive Server Anywhere), les instructions suivantes, qui impliquent le
mot-cl SQL user, sont correctes pour les deux SGBD :
CREATE TABLE "user" (
col1 char(5)
) ;
INSERT "user" ( col1 )
VALUES ( abcde ) ;

Si vous choisissez de dsactiver loption quoted_identifier (par dfaut dans


Adaptive Server Enterprise ), les instructions suivantes sont correctes pour
les deux SGBD :
SELECT *
FROM employee
WHERE emp_lname = "Chin"

23
Conditions de recherche
Fonction Spcifie une condition de recherche associe une clause WHERE,
HAVING ou CHECK, une phrase ON dune jointure ou une expression
IF.
Syntaxe condition_recherche :
expression compar_ expression
| expression compar_ { [ ANY | SOME] | ALL } ( sous-requte )
| expression IS [ NOT ] NULL
| expression [ NOT ] BETWEEN expression AND expression
| expression [ NOT ] LIKE expression [ ESCAPE expression ]
| expression [ NOT ] IN ( { expression
| sous-requte
| valeur-expr1 , valeur-expr2 [ ,valeur-expr3 ] . . . } )
| EXISTS ( sous_requte )
| NOT condition
| condition_recherche AND condition_recherche
| condition_recherche OR condition_recherche
| ( condition_recherche )
| ( condition_recherche , estimation )
| condition_recherche IS [ NOT ] { TRUE | FALSE | UNKNOWN}
| opration_trigger

Paramtres compare_ :
= | > | < | >= | <= | <> | != | !< | !>
opration_trigger :
INSERTING | DELETING
| UPDATING( chane_nom_colonne ) | UPDATE( nom_colonne )

Utilisation Tout contexte.


Autorisations Vous devez tre connect la base de donnes.
Effets secondaires Aucun
Description Les conditions de recherche permettent de slectionner un sous-ensemble de
lignes dune table, ou sont utilises au sein dune instruction de contrle
telle quune instruction IF pour dterminer le contrle des flux.
Dans le langage SQL, chaque condition est considre comme TRUE,
FALSE ou UNKNOWN. Il sagit dune logique ternaire. Le rsultat dune
comparaison est UNKNOWN si lune des valeurs compare est NULL. Vous
trouverez dans la section Logique ternaire la page 31 des combinaisons
doprateurs logiques au sein de la logique ternaire.
Les lignes ne satisfont une condition de recherche que si et seulement si le
rsultat de la condition est TRUE. En revanche, les lignes ne remplissent pas
une condition dont le rsultat est UNKNOWN ou FALSE. Pour plus

24
Chapitre 1. Elments de langage SQL

dinformations sur la valeur NULL, reportez-vous Valeur NULL la


page 52.
Les sous-requtes constituent une classe importante dexpressions utilises
dans un grand nombre de conditions de recherche. Pour plus dinformations
sur lutilisation des sous-requtes dans les conditions de recherche,
reportez-vous la section Sous-requtes dans des conditions de recherche
la page 25.
Les diffrents types de condition de recherche sont abords dans les sections
suivantes.
Voir aussi Expressions la page 17

Sous-requtes dans des conditions de recherche


Les sous-requtes renvoyant exactement une colonne et zro ou une ligne
peuvent tre utilises dans toute instruction SQL, chaque fois quil est
possible dutiliser un nom de colonne, y compris au milieu dune expression.
Par exemple, il est possible de comparer des expressions des sous-requtes
dans des conditions de comparaison (reportez-vous la section Oprateurs
de comparaison la page 12) tant que la sous-requte ne renvoie pas plus
dune ligne. Si la sous-requte (qui doit comporter une colonne) renvoie une
ligne, la valeur associe cette ligne est alors compare lexpression. Si la
requte ne renvoie aucune ligne, sa valeur est NULL.
Les sous-requtes renvoyant exactement une colonne et un nombre
quelconque de lignes peuvent tre utilises dans des conditions IN, ANY et
ALL. Celles qui renvoient un nombre quelconque de lignes et de colonnes
sutilisent dans des conditions EXISTS. Ces conditions sont dveloppes
dans les sections ci-aprs.

Condition ALL ou ANY


La syntaxe de la condition ANY est la suivante :
expression compare_ ANY ( sous-requte )

o compare_ reprsente un oprateur de comparaison.


Par exemple, une condition ANY avec un oprateur dgalit,
expression = ANY ( sous-requte )

est vraie (TRUE) si expression est gale lune des valeurs du rsultat de la
sous-requte. Elle est fausse (FALSE) si lexpression a une valeur non
NULL et ne correspond aucune des colonnes de la sous-requte. Elle est

25
non dtermine (UNKNOWN) si la valeur dexpression est NULL, sauf si le
rsultat de la sous-requte ne contient aucune ligne, auquel cas la condition
est toujours fausse (FALSE).
Le mot-cl SOME est synonyme de ANY.
La syntaxe de la condition ALL est la suivante :
expression compare_ ALL ( sous-requte )

o compare_ reprsente un oprateur de comparaison.


Normes et compatibilit Ces conditions sont compatibles avec Adaptive Server Enterprise et
Adaptive Server Anywhere. Adaptive Server Anywhere accepte SOME
comme synonyme de ANY.

Condition BETWEEN
La syntaxe de la condition BETWEEN est la suivante :
expr [ NOT ] BETWEEN dbut_expr AND fin_expr

La condition BETWEEN peut renvoyer la valeur TRUE, FALSE ou


UNKNOWN. En labsence du mot-cl NOT, le rsultat de la condition est
TRUE si expr est compris entre dbut_expr et fin_expr. Le mot-cl NOT
inverse le sens de la condition, la valeur UNKNOWN restant inchange.
La condition BETWEEN quivaut la combinaison de deux ingalits :
[ NOT ] ( expr >= dbut_expr AND expr <= fin_expr )

Normes et compatibilit La condition BETWEEN est compatible avec Adaptive Server Anywhere
et Adaptive Server Enterprise.

Condition LIKE
La syntaxe de la condition LIKE est la suivante :
expr [NOT] LIKE masque [ESCAPE expr_chappement]

La condition LIKE peut renvoyer la valeur TRUE, FALSE ou UNKNOWN.


En labsence du mot-cl NOT, le rsultat de la condition est TRUE si
expression correspond la valeur de masque. Si la valeur dexpression ou de
masque est NULL, cette condition gnre le rsultat UNKNOWN. Le
mot-cl NOT inverse le sens de la condition, la valeur UNKNOWN restant
inchange.
Le masque peut contenir un nombre quelconque de caractres joker. Ces
caractres sont les suivants :

26
Chapitre 1. Elments de langage SQL

Caractre joker Correspondance

_ (tiret bas) Un caractre quelconque

% (pourcentage) Toute chane constitue de zro, un ou plusieurs caractres

[] Tout caractre unique appartenant lintervalle ou


lensemble spcifi

[^] Tout caractre unique nappartenant pas lintervalle ou


lensemble spcifi
Tous les autres caractres doivent correspondre exactement.
Par exemple, la condition de recherche :
... name LIKE a%b_

est vraie (TRUE) pour toute ligne dans laquelle name commence par la
lettre a et dont lavant-dernier caractre est la lettre b.
Si vous spcifiez expr_chappement, cette expression doit gnrer un
caractre unique. Ce caractre peut prcder un symbole pourcentage, un
tiret bas, un crochet gauche ou un autre caractre dchappement du masque,
afin dempcher le caractre spcial dtre associ une signification
particulire. Dans ce cas, un symbole pourcentage correspondra
effectivement un symbole pourcentage et un tiret bas, un tiret bas.
Les masques dune longueur de 126 caractres au plus sont pris en charge.
Ceux dont la longueur dpasse 254 caractres sont rejets. Suivant leur
contenu, certains masques, dune longueur comprise entre 127 et
254 caractres, sont nanmoins pris en charge.
Recherche dun Pour spcifier un ensemble de caractres rechercher, saisissez les
caractre dans un caractres voulus entre crochets. Par exemple, la condition suivante
ensemble reconnat les chanes smith et smyth :
LIKE sm[iy]th

Recherche dun Pour spcifier un intervalle de caractres rechercher, il vous suffit


caractre dans un dindiquer les limites de cet intervalle entre crochets, en les sparant par un
intervalle tiret. Par exemple, la condition suivante recherche les chanes bough et
rough, mais pas tough :
LIKE [a-r]ough

Lintervalle de caractres [a-z] est interprt comme suprieur ou gal a et


infrieur ou gal z, les oprations suprieur et infrieur tant
effectues suivant lordre de tri de la base de donnes. Pour plus
dinformations sur lordre des caractres dans un classement, reportez-vous

27
la section Langues internationales et jeux de caractres [ASA - Guide
dadministration, page 349].
La limite infrieure de lintervalle doit prcder la limite suprieure.
Par exemple, une condition LIKE contenant lexpression [z-a] ne renvoie
aucune ligne, puisquil nexiste pas de correspondance de caractres avec
lintervalle [z-a].
Les intervalles de caractres ne tiennent pas compte de la distinction
majuscules/minuscules, moins que celle-ci nait t dfinie lors de la
cration de la base de donnes. Par exemple, la condition ci-aprs reconnat
les chanes Bough, rough et TOUGH :
LIKE [a-z]ough

Si la distinction majuscules/minuscules a t dfinie lors de la cration de la


base de donnes, la condition de recherche opre galement cette distinction.
Pour effectuer une recherche sans distinction majuscules/minuscules dans
une base de donnes o cette distinction est dfinie, vous devez inclure des
caractres en majuscules et en minuscules. Par exemple, la condition
ci-aprs reconnat les chanes Bough, rough et TOUGH :
LIKE [a-zA-Z][oO][uU][gG][hH]

Recherches combinant Vous avez la possibilit de combiner des intervalles et des ensembles
des intervalles et des lintrieur de crochets. Par exemple, la condition suivante reconnat les
ensembles chanes bough, rough et tough :
... LIKE [a-rt]ough

Lexpression entre crochets [a-mpqs-z ] est interprte comme un seul


caractre compris dans lintervalle a m inclus, ou gal p ou q, ou
compris dans lintervalle s z inclus.
Exclusion de caractres Laccent circonflexe (^) permet de spcifier un intervalle de caractres
exclure de la recherche. Par exemple, la condition suivante recherche la
chane tough, mais pas les chanes rough ni bough :
... LIKE [^a-r]ough

Laccent circonflexe a valeur de ngation par rapport lexpression quil


prcde dans les crochets. Lexpression entre crochets [^a-mpqs-z] est
interprte comme un seul caractre non compris dans lintervalle a m
inclus, ou non gal p ou q, ou non compris dans lintervalle s z inclus.
Cas particuliers Tout caractre unique entre crochets reprsente le caractre spcifi.
Par exemple, [a] correspond seulement au caractre a .. [^] laccent
circonflexe, [%] au symbole pourcentage (qui ne joue pas ici le rle de
caractre joker) et [_] au tiret de soulignement. En outre, [[] correspond

28
Chapitre 1. Elments de langage SQL

seulement au caractre [
Voici dautres cas particuliers :
Lexpression [a-] correspond au caractre a ou -.

Lexpression [] na pas de correspondance et ne renvoie aucune ligne.


Les expressions [ ou [abp-q sont errones et entranent des erreurs de
syntaxe.
Vous ne pouvez pas utiliser de caractres joker dans les crochets.
Lexpression [a%b] recherche a, % ou b.
Laccent circonflexe ne permet dexclure un intervalle que sil est plac
en tte de lexpression entre crochets. Lexpression [a^b] recherche a, ^
ou b.
Masques de recherche Si votre masque de recherche comporte des blancs en fin de chane,
comportant des blancs Adaptive Server Anywhere ne met le masque en correspondance quavec les
en fin de chane valeurs contenant des blancs, cest--dire quil ne remplit pas les chanes
laide de blancs. Par exemple, les masques de recherche 90 , 90[ ] et
90_ correspondent la valeur 90 , mais pas 90, mme si la valeur
teste figure dans une colonne de type CHAR ou VARCHAR large dau
moins trois caractres.
Normes et compatibilit Cette clause nest prise en charge que par Adaptive Server Anywhere.

Conditions IN
La syntaxe de la condition IN est la suivante :
expression [ NOT ] IN { ( sous-requte ) | ( expression2 ) | ( valeur_
expr , . . . ) }

Une condition IN, sans le mot-cl NOT, svalue selon les rgles suivantes :
TRUE si expression nest pas NULL et est gale au moins une des
valeurs.
UNKNOWN si expression est NULL et la liste de valeurs nest pas vide,
ou si au moins une des valeurs est NULL et expression nest gale
aucune des autres valeurs.
FALSE si expression est NULL et sous_requte ne renvoie aucune
valeur ; ou si expression nest pas NULL, aucune des valeurs nest NULL
et expression nest gale aucune des valeurs.

29
Le mot-cl NOT intervertit TRUE et FALSE.
La condition de recherche expression IN ( valeurs ) est identique la
condition expression = ANY ( valeurs ). La condition de recherche
expression NOT IN ( valeurs ) est identique la condition de recherche
expression <> ALL ( valeurs ).
Les arguments valeur_expr sont des expressions qui prennent une seule
valeur, pouvant tre une chane, un nombre, une date ou tout autre type de
donnes SQL.
Normes et compatibilit Les conditions IN sont compatibles avec Adaptive Server Anywhere et
Adaptive Server Enterprise.

Condition EXISTS
La syntaxe de la condition EXISTS est la suivante :
EXISTS( sous_requte )

La condition EXISTS renvoie la valeur TRUE si le rsultat de la


sous-requte contient au moins une ligne et la valeur FALSE sil nen
contient aucune. Le rsultat de la condition EXISTS ne peut pas avoir pour
valeur UNKNOWN.
Normes et compatibilit La condition EXISTS est compatible avec Adaptive Server Enterprise et
Adaptive Server Anywhere.

Condition IS NULL
La syntaxe de la condition IS NULL est la suivante :
expression IS [ NOT ] NULL

En labsence du mot-cl NOT, le rsultat de la condition IS NULL est TRUE


si la valeur de lexpression est NULL ; dans le cas contraire, il prend la
valeur FALSE. Le mot-cl NOT inverse le sens de la condition.
Normes et compatibilit La condition IS NULL est compatible avec Adaptive Server Enterprise et
Adaptive Server Anywhere.

Conditions valeurs de vrit


La syntaxe des conditions valeurs de vrit est la suivante :
IS [ NOT ] valeur_vrit

En labsence du mot-cl NOT, la condition est vraie (TRUE) si elle gnre


comme rsultat la valeur_vrit indique, qui doit tre TRUE, FALSE ou

30
Chapitre 1. Elments de langage SQL

UNKNOWN. Sinon, la condition est fausse (FALSE). Le mot-cl NOT


inverse le sens de la condition, la valeur UNKNOWN restant inchange.
Normes et compatibilit Extension propritaire. Adaptive Server Enterprise naccepte pas les
conditions valeur de vrit.

Conditions dopration de trigger


La syntaxe de la condition dopration de trigger est la suivante :
opration_trigger :
INSERTING | DELETING
| UPDATING( chane_nom_colonne ) | UPDATE( nom_colonne )

Les conditions dopration de trigger ne peuvent tre utilises que dans les
triggers, afin de raliser des actions qui dpendent du type daction qui a
dclench le trigger.
Largument pour UPDATING est une chane entre guillemets (par exemple,
UPDATING( mycolumn )). Largument pour UPDATE est un
identificateur (par exemple, UPDATE( mycolumn )). Les deux versions
sont interoprables et sont incluses pour des raisons de compatibilit dans
les dialectes SQL des SGBD dautres diteurs.
Si vous indiquez une fonction UPDATING ou UPDATE, vous devez aussi
indiquer une clause REFERENCING dans linstruction CREATE TRIGGER
pour viter des erreurs de syntaxe.
Exemple Le trigger ci-aprs affiche un message montrant laction qui a dclench le
trigger.
CREATE TRIGGER tr BEFORE INSERT, UPDATE, DELETE
ON sample_table
REFERENCING OLD AS t1old
FOR EACH ROW
BEGIN
DECLARE msg varchar(255);
SET msg = This trigger was fired by an ;
IF INSERTING THEN
SET msg = msg || insert
ELSEIF DELETING THEN
set msg = msg || delete
ELSEIF UPDATING THEN
set msg = msg || update
END IF;
MESSAGE msg TO CLIENT
END

Logique ternaire
Les tableaux ci-aprs montrent le fonctionnement des oprateurs logiques

31
AND, OR, NOT et IS de SQL dans la logique ternaire.
Oprateur AND

AND TRUE FALSE UNKNOWN

TRUE TRUE FALSE UNKNOWN

FALSE FALSE FALSE FALSE

UNKNOWN UNKNOWN FALSE UNKNOWN


Oprateur OR

OR TRUE FALSE UNKNOWN

TRUE TRUE TRUE TRUE

FALSE TRUE FALSE UNKNOWN

UNKNOWN TRUE UNKNOWN UNKNOWN


Oprateur NOT

TRUE FALSE UNKNOWN

FALSE TRUE UNKNOWN


Oprateur IS

IS TRUE FALSE UNKNOWN

TRUE TRUE FALSE FALSE

FALSE FALSE TRUE FALSE

UNKNOWN FALSE FALSE TRUE

Estimation de slectivit explicite


Adaptive Server Anywhere utilise des informations statistiques pour dcider
de la meilleure stratgie adopter pour chaque instruction. Adaptive Server
Anywhere runit automatiquement ces statistiques pour les actualiser. Ces
statistiques sont stockes en permanence dans la base de donnes, dans la
table systme SYSCOLSTAT. Les statistiques runies pendant le traitement
dune instruction sont votre disposition si vous recherchez une manire
efficace dexcuter les instructions suivantes.
Il arrive que les statistiques ne soient plus exactes ou que les statistiques
pertinentes ne soient pas disponibles. Cest une condition susceptible de se
produire lorsquun petit nombre de requtes ont t excutes aprs lajout,
la mise jour ou la suppression dune grande quantit de donnes. Dans ce

32
Chapitre 1. Elments de langage SQL

cas, vous pouvez excuter une instruction CREATE STATISTICS.


En cas de problme avec un plan dexcution spcifique, vous pouvez
utiliser les directives doptimisation pour exiger lutilisation dun index
particulier. Pour plus dinformations, reportez-vous la section Clause
FROM la page 511.
Dans de rares cas cependant, ces mesures peuvent se rvler inefficaces.
Vous amliorerez alors les performances en fournissant des estimations de
slectivit explicites.
Pour chaque table intervenant dans un plan dexcution, loptimiseur doit
estimer le nombre de lignes qui seront renvoyes. Si vous savez quune
condition prsente un taux de russite diffrent de lestimation de
loptimiseur, vous pouvez indiquer de manire explicite une estimation
utilisateur dans la condition de recherche.
Lestimation sexprime en pourcentage. Elle peut tre reprsente par un
nombre entier ou des fractions.

Attention
Si possible, vitez de fournir des estimations explicites dans des instruc-
tions utilises de manire continue. Si les donnes changent, lestimation
explicite risque dtre inexacte et dentraner la gnration de plans peu
performants. Si vous utiliser des estimations de slectivit explicites,
assurez-vous que le nombre est exacte. Par exemple, ne fournissez pas les
valeurs 0 % ou 100 % pour imposer lutilisation dun index.
Vous pouvez dsactiver les estimations utilisateur en dfinissant loption de
base de donnes USER_ESTIMATES OFF. La valeur par dfaut de
USER_ESTIMATES est OVERRIDE-MAGIC, ce qui signifie que les
estimations de slectivit fournies par lutilisateur ne sont employes que
dans les cas o loptimiseur utiliserait une valeur de slectivit MAGIC
(valeur par dfaut) pour la condition. Loptimiseur nutilise des valeurs
MAGIC quen dernier ressort, lorsquil est incapable de prvoir prcisment
la slectivit dun prdicat.
Pour plus dinformations sur la dsactivation des estimations de
slectivit dfinies par lutilisateur, reportez-vous la section Option
USER_ESTIMATES [base de donnes] [ASA - Guide dadministration,
page 762].

Pour plus dinformations sur les statistiques, reportez-vous la section


Histogrammes et estimations de loptimiseur [ASA - Guide de lutilisateur
SQL, page 429].

Exemples

33
La requte ci-dessous fournit une estimation selon laquelle 1 % des
valeurs ship_date seront postrieures au 2001/06/30 :
SELECT ship_date
FROM sales_order_items
WHERE ( ship_date > 2001/06/30, 1 )
ORDER BY ship_date DESC

La requte ci-dessous estime que 50 % des lignes vont satisfaire la


condition.
SELECT *
FROM customer c, sales_order o
WHERE (c.id = o.cust_id, 0.5)

Les fractions augmentent la prcision des estimations de lutilisateur pour


les jointures, en particulier sil sagit de tables volumineuses.
Normes et compatibilit Adaptive Server Enterprise ne prend pas en charge les estimations
explicites.

34
Chapitre 1. Elments de langage SQL

Valeurs spciales
Les valeurs spciales sont utilisables dans des expressions et comme valeurs
par dfaut de colonnes lors de la cration de tables.
Alors que certaines valeurs spciales peuvent tre interroges, dautres ne
peuvent servir que de valeurs par dfaut pour les colonnes. Ainsi, user, last
user, timestamp et UTC timestamp ne peuvent tre utiliss que comme
valeur par dfaut.

Valeur spciale CURRENT DATABASE


Fonction CURRENT DATABASE renvoie le nom de la base de donnes courante.
Type de donnes STRING
Voir aussi Expressions la page 17

Valeur spciale CURRENT DATE


Fonction CURRENT DATE renvoie lanne, le mois et le jour courants.
Type de donnes DATE
Voir aussi Expressions la page 17
Type de donnes TIME [Date et heure] la page 77

Valeur par dfaut CURRENT PUBLISHER


Fonction CURRENT PUBLISHER renvoie une chane qui contient lID utilisateur de
lditeur de la base de donnes pour des rplications SQL Remote.
Type de donnes STRING
CURRENT PUBLISHER est utilisable comme valeur par dfaut dans des
colonnes ayant le type de donnes caractre.
Voir aussi Expressions la page 17
Conception dune installation SQL Remote pour Adaptive Server
Anywhere [SQL Remote - Guide de lutilisateur, page 93]

Valeur spciale CURRENT TIME


Fonction Renvoie lheure courante avec les minutes, les secondes et les fractions de
seconde.
Type de donnes TIME

35
Description La prcision des fractions de seconde est de 6 dcimales. La prcision de
lheure est limite par la prcision de lhorloge systme.
Voir aussi Expressions la page 17
Type de donnes TIME [Date et heure] la page 77

Valeur spciale CURRENT TIMESTAMP


Fonction Combine CURRENT DATE et CURRENT TIME pour former une valeur
TIMESTAMP contenant lanne, le mois, le jour, lheure, les minutes, les
secondes et les fractions de seconde. La prcision des fractions de seconde
est de 3 dcimales. La prcision de lheure est limite par la prcision de
lhorloge systme.
Les informations renvoyes par CURRENT TIMESTAMP sont quivalentes
aux informations renvoyes par les fonctions GETDATE et NOW.
CURRENT_TIMESTAMP et CURRENT TIMESTAMP sont quivalents.
Type de donnes TIMESTAMP
Voir aussi Valeur spciale CURRENT TIME la page 35
Expressions la page 17
Type de donnes TIMESTAMP [Date et heure] la page 77
GETDATE (fonction de date et dheure) la page 162
NOW (fonction de date et dheure) la page 194

Valeur spciale CURRENT USER


Fonction CURRENT USER renvoie une chane qui contient lID utilisateur de la
connexion courante.
Type de donnes STRING
CURRENT USER est utilisable comme valeur par dfaut dans des colonnes
ayant le type de donnes caractre.
Description Lors dune instruction UPDATE, les colonnes ayant la valeur par dfaut
CURRENT USER ne sont pas modifies. CURRENT_USER et CURRENT
USER sont quivalents.
Voir aussi Expressions la page 17

Valeur spciale CURRENT UTC TIMESTAMP


Fonction Combine CURRENT DATE et CURRENT TIME, modifies par la valeur
dajustement des fuseaux horaires du serveur, pour former une valeur
TIMESTAMP UTC (Coordinated Universal Time) contenant lanne, le

36
Chapitre 1. Elments de langage SQL

mois, le jour, lheure, les minutes, les secondes et les fractions de seconde.
Cette fonctionnalit permet de saisir des donnes avec une rfrence horaire
cohrente, quel que soit le fuseau horaire du lieu o les donnes ont t
saisies.
Type de donnes TIMESTAMP
Voir aussi Type de donnes TIMESTAMP [Date et heure] la page 77
Valeur spciale UTC TIMESTAMP la page 39
Valeur spciale CURRENT TIMESTAMP la page 36
Option TRUNCATE_TIMESTAMP_VALUES [base de donnes] [ASA
- Guide dadministration, page 759]

Valeur spciale LAST USER


Fonction Nom du dernier utilisateur qui a modifi la ligne.
Type de donnes STRING
LAST USER est utilisable comme valeur par dfaut dans des colonnes ayant
le type de donnes caractre.
Description Lors dune instruction INSERT, cette constante a les mmes effets que
CURRENT USER. Lors dune instruction UPDATE, si une colonne avec la
valeur par dfaut LAST USER nest pas explicitement modifie, elle change
et prend le nom de lutilisateur courant.
Combine avec DEFAULT TIMESTAMP, il est possible dutiliser une valeur
par dfaut LAST USER pour enregistrer (dans des colonnes distinctes) la
fois lutilisateur et la date et lheure auxquelles la ligne a t modifie pour
la dernire fois.
Voir aussi Valeur spciale CURRENT USER la page 36
Valeur spciale CURRENT TIMESTAMP la page 36
Instruction CREATE TABLE la page 425

Valeur spciale SQLCODE


Fonction Valeur SQLCODE courante.
Type de donnes STRING
Description La valeur SQLCODE est dfinie aprs chaque instruction. Vous pouvez
vrifier la valeur de SQLCODE pour voir si linstruction a abouti ou non.
Voir aussi Expressions la page 17
ASA - Messages derreur.

37
Valeur spciale SQLSTATE
Fonction Valeur SQLSTATE courante
Type de donnes STRING
Description La valeur SQLSTATE est dfinie aprs chaque instruction. Vous pouvez
vrifier SQLSTATE pour voir si linstruction a abouti ou non.
Voir aussi Expressions la page 17
ASA - Messages derreur

Valeur spciale TIMESTAMP


Fonction TIMESTAMP indique quand chaque ligne de la table a t modifie pour la
dernire fois. Lorsquune colonne est dclare avec DEFAULT
TIMESTAMP, une valeur par dfaut est fournie pour les insertions, et la
valeur est actualise avec la date et lheure courantes ds mise jour de la
ligne.
Type de donnes TIMESTAMP
Description Les colonnes dclares avec DEFAULT TIMESTAMP contiennent des
valeurs uniques pour permettre aux applications de dtecter des mises jour
quasi simultanes sur la mme ligne. Si la valeur timestamp actuelle est
identique la valeur la plus rcente, elle est incrmente de la valeur de
loption DEFAULT_TIMESTAMP_INCREMENT.
Dans Adaptive Server Anywhere, vous pouvez automatiquement tronquer
des valeurs en fonction de loption
DEFAULT_TIMESTAMP_INCREMENT. Cette fonctionnalit permet
dassurer la compatibilit avec dautres logiciels de base de donnes qui
enregistrent des valeurs TIMESTAMP moins prcises.
La variable globale @@dbts renvoie une valeur TIMESTAMP reprsentant
la dernire valeur gnre pour une colonne laide de DEFAULT
TIMESTAMP.
Voir aussi Type de donnes TIMESTAMP [Date et heure] la page 77
Valeur spciale CURRENT UTC TIMESTAMP la page 36
Option DEFAULT_TIMESTAMP_INCREMENT [base de donnes]
[ASA - Guide dadministration, page 708]
Option TRUNCATE_TIMESTAMP_VALUES [base de donnes] [ASA
- Guide dadministration, page 759]

38
Chapitre 1. Elments de langage SQL

Valeur spciale USER


Fonction USER renvoie une chane qui contient lID utilisateur de la connexion
courante.
Type de donnes STRING
USER est utilisable comme valeur par dfaut dans des colonnes ayant le
type de donnes caractre.
Description Lors dune instruction UPDATE, les colonnes ayant la valeur par dfaut
USER ne sont pas modifies.
Voir aussi Expressions la page 17
Valeur spciale CURRENT USER la page 36
Valeur spciale LAST USER la page 37

Valeur spciale UTC TIMESTAMP


Fonction UTC TIMESTAMP indique lheure UTC (Coordinated Universal Time)
laquelle chaque ligne a t modifie pour la dernire fois.
Type de donnes TIMESTAMP
Voir aussi Type de donnes TIMESTAMP [Date et heure] la page 77
Valeur spciale CURRENT UTC TIMESTAMP la page 36
Valeur spciale TIMESTAMP la page 38
Option DEFAULT_TIMESTAMP_INCREMENT [base de donnes]
[ASA - Guide dadministration, page 708]
Option TRUNCATE_TIMESTAMP_VALUES [base de donnes] [ASA
- Guide dadministration, page 759]

39
Variables
Adaptive Server Anywhere prend en charge trois niveaux de variables :
Variables locales Elles sont dfinies au sein dune instruction
compose dans une procdure ou dans un batch utilisant linstruction
DECLARE. Elles nexistent quau sein de linstruction compose.

Variables de niveau connexion Elles sont dfinies via linstruction


CREATE VARIABLE. Elles appartiennent la connexion courante et
disparaissent lorsque vous vous dconnectez de la base de donnes ou si
vous utilisez linstruction DROP VARIABLE.
Variables globales Ce sont des variables systme dotes de valeurs
fournies par le systme. Chaque variable globale est prcde de deux
signes @. Par exemple, la variable globale @@version contient le
numro de version courant du serveur de base de donnes. Les
utilisateurs ne peuvent pas dfinir de variable globale.
Les variables locales et de niveau connexion sont dclares par lutilisateur
et peuvent tre utilises dans les instructions SQL des procdures et des
batchs afin de stocker des informations. Les variables globales sont des
variables systme dotes de valeurs fournies par le systme.
Voir aussi Type de donnes TIMESTAMP [Date et heure] la page 77
Instruction CREATE VARIABLE la page 447

Variables locales
Les variables locales sont dclares laide de linstruction DECLARE, qui
ne sutilise quau sein dune instruction compose (entoure par les
mots-cls BEGIN et END). La variable a pour valeur initiale NULL. Pour
redfinir cette valeur, recourez linstruction SET, ou linstruction
SELECT accompagne dune clause INTO.
La syntaxe de linstruction DECLARE est la suivante :
DECLARE variable-name data-type

Il est possible de passer des variables locales, en tant quarguments, une


procdure, sous rserve que lappel de procdure fasse partie intgrante de
linstruction compose.
Exemples Le batch ci-dessous illustre lutilisation des variables locales.
BEGIN
DECLARE local_var INT;
SET local_var = 10;
MESSAGE local_var = , local_var TO CLIENT;
END

40
Chapitre 1. Elments de langage SQL

Lexcution de ce batch partir dInteractive SQL renvoie le message


local_var = 10 dans le volet Messages dInteractive SQL.

La variable local_var nexiste pas en dehors de linstruction compose


dans laquelle elle est dclare. Le batch ci-aprs est incorrect et gnre
lerreur La colonne est introuvable :
-- This batch is invalid.
BEGIN
DECLARE local_var INT;
SET local_var = 10;
END;
MESSAGE local_var = , local_var TO CLIENT;

Lexemple suivant illustre lutilisation de linstruction SELECT avec une


clause INTO pour dfinir la valeur dune variable locale :
BEGIN
DECLARE local_var INT;
SELECT 10 INTO local_var;
MESSAGE local_var = , local_var TO CLIENT;
END

Lexcution de ce batch partir dInteractive SQL affiche le message


local_var = 10 sur la fentre du serveur.

Normes et compatibilit Noms Adaptive Server Enterprise et Adaptive Server Anywhere


prennent en charge les variables locales. Dans Adaptive Server
Enterprise, elles doivent tre prcdes du symbole @. Dans Adaptive
Server Anywhere, le prfixe @ est facultatif. Pour conserver la
compatibilit avec le langage SQL, prfixez toutes vos variables avec @.

Porte La porte des variables locales est diffrente dans Adaptive


Server Anywhere et Adaptive Server Enterprise. Adaptive Server
Anywhere prend en charge linstruction DECLARE pour dclarer des
variables locales lintrieur dun batch. Cependant, si DECLARE est
plac dans une instruction compose, sa porte se limite cette
instruction compose.

Dclaration Dans Adaptive Server Anywhere, une seule variable peut


tre dclare pour chaque instruction DECLARE. Dans Adaptive Server
Enterprise, il est possible de dclarer plusieurs variables dans une seule
instruction.
Pour plus dinformations sur les batchs et la porte des variables locales,
reportez-vous la section Variables dans les procdures Transact-SQL
[ASA - Guide de lutilisateur SQL, page 541].

41
Variables de niveau connexion
Les variables de niveau connexion sont dclares via linstruction CREATE
VARIABLE. Il est possible de passer des variables de niveau connexion, en
tant que paramtres, des procdures.
La syntaxe de linstruction CREATE VARIABLE est la suivante :
CREATE VARIABLE variable-name data-type

Lorsque vous crez une variable, elle a pour valeur initiale NULL. La valeur
des variables de niveau connexion se dfinit de la mme manire que celle
des variables locales, laide de linstruction SET, ou de linstruction
SELECT accompagne dune clause INTO.
Les variables de niveau connexion existent jusqu ce que la connexion soit
interrompue ou que vous les supprimiez explicitement par le biais de
linstruction DROP VARIABLE. Linstruction suivante permet de supprimer
la variable var_connexion :
DROP VARIABLE con_var

Normes et compatibilit Adaptive Server Enterprise ne prend pas en charge les variables de niveau
connexion.
Exemple Le batch dinstructions SQL ci-aprs illustre lutilisation des variables de
niveau connexion :
CREATE VARIABLE con_var INT;
SET con_var = 10;
MESSAGE con_var = , con_var TO CLIENT;

Lexcution de ce batch partir dInteractive SQL affiche le message


con_var = 10 sur la fentre du serveur.

Variables globales
Les valeurs des variables globales sont dfinies par le serveur de base de
donnes. Par exemple, la variable globale @@version contient le numro de
version courant du serveur de base de donnes.
Les variables globales se distinguent des variables locales et de niveau
connexion par les deux signes @ qui prcdent leurs noms. Par exemple,
@@error et @@rowcount sont des variables globales. Les utilisateurs
nont pas la possibilit de crer des variables globales ni de modifier leur
valeur directement.
Certaines variables globales, telles que @@identity, contiennent des
informations relatives la connexion. Leurs valeurs sont donc spcifiques de

42
Chapitre 1. Elments de langage SQL

la connexion. Dautres, par contre, telles que @@connections, ont des


valeurs communes toutes les connexions.
Variables globales et Les constantes spciales (Par exemple CURRENT DATE, CURRENT
constantes spciales TIME, USER, and SQLSTATE) sont similaires aux variables globales.
Linstruction suivante permet dextraire une valeur de la variable globale
relative la version :
SELECT @@version

Dans les procdures et les triggers, vous pouvez affecter des variables
globales une liste, laide de SELECT INTO. La procdure ci-aprs
renvoie le numro de version du serveur dans le paramtre ver.
CREATE PROCEDURE VersionProc (OUT ver
VARCHAR(100))
BEGIN
SELECT @@version
INTO ver;
END

Dans Embedded SQL, des variables globales peuvent tre affectes, laide
de SELECT INTO, une liste de variables htes.
Liste des variables Le tableau suivant rpertorie les variables globales disponibles dans
globales Adaptive Server Anywhere.

Nom de variable Signification


@@dbts Valeur du type TIMESTAMP reprsentant la dernire
valeur gnre utilise pour toutes les colonnes dfinies
avec DEFAULT TIMESTAMP.
@@error Gnralement utilise pour vrifier ltat derreur
(succs ou chec) de la dernire instruction excute.
Elle a pour valeur 0 (zro), si la transaction prcdente
a abouti ; sinon, elle contient le numro de la dernire
erreur gnre par le systme. Une instruction de
type if @@error != 0 return met fin au programme
en cas derreur. Chaque instruction SQL rinitialisant
@@error, il faut effectuer le contrle immdiatement
aprs linstruction dont le rsultat est incertain.

43
Nom de variable Signification
@@fetch_status Informations dtat rsultant de la dernire instruction
dextraction de ligne dun curseur (fetch). @@fetch_-
status peut prendre les valeurs suivantes

0 Linstruction fetch sest termine correctement.


-1 linstruction a gnr une erreur ;
-2 le jeu de rsultats ne contient plus de donnes.

Cette fonction est identique @@sqlstatus, except


quelle renvoie des valeurs diffrentes. Elle est des-
tine Microsoft SQL Server pour des raisons de
compatibilit.
@@identity Dernire valeur insre dans une colonne IDENTITY
ou DEFAULT AUTOINCREMENT par une instruction
INSERT ou SELECT INTO.
Pour plus dinformations, reportez-vous la section
Variable globale @@identity la page 49.
@@isolation Niveau disolement courant. @@isolation renvoie la
valeur du niveau actif.
@@procid ID de la procdure stocke en cours dexcution.

@@rowcount Nombre de lignes concernes par la dernire instruc-


tion. La valeur de @@rowcount doit tre vrifie
immdiatement aprs linstruction.
Les insertions, mises jour et suppressions dfinissent
la variable @@rowcount qui prend alors la valeur du
nombre de lignes concernes.
Avec des curseurs, @@rowcount reprsente le nombre
cumul de lignes renvoyes au client partir du jeu de
rsultats curseur, jusqu la dernire requte dextrac-
tion.
Contrairement ce qui se produit dans Adaptive Server
Enterprise, @@rowcount nest pas rinitialise 0
(zro) par une instruction qui ne concerne pas les
lignes, Par exemple une instruction IF.
@@servername Nom du serveur de base de donnes courant.

44
Chapitre 1. Elments de langage SQL

Nom de variable Signification


@@sqlstatus Informations dtat rsultant de la dernire instruction
dextraction de ligne dun curseur (fetch). @@sqlstatus
peut prendre les valeurs suivantes :

0 Linstruction fetch sest termine correctement.


1 Linstruction fetch a gnr une erreur.
2 Le jeu de rsultats ne contient plus de donnes.

@@version Version courante dAdaptive Server Anywhere.

Normes et compatibilit La liste ci-dessous rpertorie toutes les variables globales dAdaptive Server
Enterprise prises en charge par Adaptive Server Anywhere. Les variables
globales dAdaptive Server Enterprise qui ne sont pas prises en charge par
Adaptive Server Anywhere ne figurent pas dans cette liste. Contrairement au
tableau prcdent, le tableau ci-dessous rpertorie toutes les variables
globales qui renvoient une valeur, y compris celles dont la valeur est fixe
NULL, 1, -1 ou 0 (zro) et celles qui peuvent navoir aucune signification.

Variable globale Valeur renvoye

@@char_convert Renvoie 0 (zro).

@@client_csname Dans Adaptive Server Enterprise, nom du jeu de


caractres du client. Variable fixe NULL si ce jeu
na jamais t initialis. Dans le cas contraire, elle
contient le nom du dernier jeu de caractres utilis.
Dans Adaptive Server Anywhere, renvoie la valeur
NULL.

@@client_csid Variable fixe -1 si ce jeu na jamais t initialis.


Dans le cas contraire, elle contient le nom du dernier
ID du jeu de caractres utilis partir de syscharsets.
Dans Adaptive Server Anywhere, renvoie 1.

@@connections Nombre des connexions tablies depuis le dernier


lancement du serveur.

@@cpu_busy Dans Adaptive Server Enterprise, dure (en nombre


dimpulsions) pendant laquelle lunit centrale (CPU)
a effectu des tches Adaptive Server Enterprise depuis
le dernier lancement dAdaptive Server Enterprise.
Dans Adaptive Server Anywhere, renvoie 0.

45
Variable globale Valeur renvoye

@@error Gnralement utilise pour vrifier ltat derreur


(succs ou chec) de la dernire instruction excute.
Elle a pour valeur 0 (zro), si la transaction prcdente
a abouti ; sinon, elle contient le numro de la dernire
erreur gnre par le systme. Une instruction telle
que
if @@error != 0 return
met fin au programme en cas derreur. Toute ins-
truction remettant @@error zro (y compris les
commandes PRINT et les tests IF), le contrle dtat
doit tre effectu juste aprs linstruction dont le
rsultat est incertain.

@@identity Dernire valeur insre dans une colonne IDENTITY


par une instruction INSERT ou SELECT INTO.
Pour plus dinformations, reportez-vous la section
Variable globale @@identity la page 49.

@@idle Dans Adaptive Server Enterprise, la dure dinactivit


(en nombre dimpulsions) dAdaptive Server Enter-
prise depuis sa dernire activation. Dans Adaptive
Server Anywhere, renvoie 0.

@@io_busy Dans Adaptive Server Enterprise, la dure (en nombre


dimpulsions) des oprations dentres/sorties dAdap-
tive Server Enterprise depuis sa dernire activation.
Dans Adaptive Server Anywhere, renvoie 0.
@@isolation Niveau disolement actuel de la connexion. Dans
Adaptive Server Enterprise, @@isolation renvoie la
valeur du niveau actif.
@@langid Renvoie un ID unique dsignant le langage utilis par
la connexion en cours.
@@language Renvoie le nom du langage utilis par la connexion.

@@maxcharlen Dans Adaptive Server Enterprise, taille maximale (en


octets) dun caractre du jeu de caractres par dfaut
dAdaptive Server Enterprise. Dans Adaptive Server
Anywhere, renvoie 1.

46
Chapitre 1. Elments de langage SQL

Variable globale Valeur renvoye

@@connexions_- Pour le serveur personnel, nombre maximal de


max connexions simultanes quil peut prendre en charge,
cest--dire 10.
Pour le serveur rseau, nombre maximal de clients
actifs (et non de connexions de base de donnes, car
chaque client peut grer plusieurs connexions).
Pour Adaptive Server Enterprise, nombre maximal de
connexions au serveur.

@@ncharsize Dans Adaptive Server Enterprise, taille moyenne (en


octets) dun caractre national. Dans Adaptive Server
Anywhere, renvoie 1.

@@nestlevel Dans Adaptive Server Enterprise, niveau dimbrication


de lexcution en cours (valeur initiale : 0 (zro)).
Chaque fois quune procdure stocke ou un trigger
appelle une autre procdure ou un autre trigger, le
niveau dimbrication est incrment. Dans Adaptive
Server Anywhere, renvoie -1.

@@pack_received Dans Adaptive Server Enterprise, nombre de paquets


entrants lus par Adaptive Server Enterprise depuis son
dernier lancement. Dans Adaptive Server Anywhere,
renvoie 0.

@@pack_sent Dans Adaptive Server Enterprise, nombre de paquets


sortants lus par Adaptive Server Enterprise depuis son
dernier lancement. Dans Adaptive Server Anywhere,
renvoie 0.

@@packet_errors Dans Adaptive Server Enterprise, nombre des erreurs


survenues lors des envois et des rceptions de paquets
par Adaptive Server Enterprise. Dans Adaptive Server
Anywhere, renvoie 0.

@@procid ID de la procdure stocke en cours dexcution.

47
Variable globale Valeur renvoye

@@rowcount Nombre de lignes concernes par la dernire com-


mande. Dans Adaptive Server Enterprise, @@row-
count est initialise 0 (zro) par toute commande
qui ne renvoie pas de ligne, par exemple une instruc-
tion IF ; dans Adaptive Server Anywhere, ce type
dinstruction ne rinitialise pas @@rowcount. Avec
des curseurs, @@rowcount reprsente le nombre cu-
mul de lignes renvoyes au client partir du jeu de
rsultats curseur, jusqu la dernire requte dextrac-
tion.

@@servername Nom du serveur local Adaptive Server Enterprise ou


Adaptive Server Anywhere

@@spid Dans Adaptive Server Enterprise, ID du processus ser-


veur actif. Dans Adaptive Server Anywhere, identifica-
teur de la connexion active. Cette valeur est identique
celle affiche par la procdure sa_conn_info.

@@sqlstatus Informations dtat rsultant de la dernire instruction


dextraction de ligne dun curseur (fetch). @@sqlsta-
tus peut prendre les valeurs suivantes :

0 Linstruction fetch sest termine correctement.


1 Linstruction fetch a gnr une erreur.
2 Le jeu de rsultats ne contient plus de donnes.

@@textsize Valeur actuelle de loption SET TEXTSIZE, qui


dfinit la taille maximale (en octets) des donnes de
type texte ou image pouvant tre renvoyes laide
dun SELECT. Sa valeur par dfaut est 32765, ce qui
correspond la chane deux octets la plus longue
renvoye par READTEXT. Cette valeur peut tre
dfinie laide de linstruction SET.

@@thresh_- Dans Adaptive Server Enterprise, niveau de variation


hysteresis de lespace libre ncessaire pour activer un seuil. Dans
Adaptive Server Anywhere, renvoie 0.

@@timeticks Dans Adaptive Server Enterprise, nombre de micro-


secondes par impulsion dhorloge. Cette dure est
dpendante de la machine. Dans Adaptive Server
Anywhere, renvoie 0.

48
Chapitre 1. Elments de langage SQL

Variable globale Valeur renvoye

@@total_errors Dans Adaptive Server Enterprise, nombre des erreurs


survenues lors des oprations de lecture et dcriture
par Adaptive Server Enterprise. Dans Adaptive Server
Anywhere, renvoie 0.

@@total_read Dans Adaptive Server Enterprise, nombre de disques


lus par Adaptive Server Enterprise depuis son der-
nier lancement. Dans Adaptive Server Anywhere,
renvoie 0.

@@total_write Dans Adaptive Server Enterprise, nombre dcritures


sur disque par Adaptive Server Enterprise depuis son
dernier lancement. Dans Adaptive Server Anywhere,
renvoie 0.
@@tranchained Mode transactionnel actuel du programme Transact-
SQL. @@tranchained renvoie 0 pour le mode non
chan et 1 pour le mode chan.

@@trancount Niveau dimbrication des transactions. Chaque instruc-


tion BEGIN TRANSACTION dun batch incrmente
la valeur de cette variable.

@@transtate Dans Adaptive Server Enterprise, tat actuel dune


transaction suite lexcution dune instruction. Dans
Adaptive Server Anywhere, renvoie -1.

@@version Informations relatives la version actuelle dAdaptive


Server Enterprise et dAdaptive Server Anywhere.

Variable globale @@identity

La variable globale @@identity contient la valeur la plus rcente insre


dans une colonne IDENTITY ou DEFAULT AUTOINCREMENT, ou zro si
la dernire insertion a eu lieu dans une table ne contenant pas de colonne de
ce type.
La valeur de @@identity dpend de la connexion. Elle est rinitialise
chaque insertion de ligne dans une table. Si une instruction insre plusieurs
lignes, @@identity contient la valeur IDENTITY de la dernire ligne
ajoute. Si la table concerne ne contient pas de colonne IDENTITY,
@@identity est dfinie 0 (zro).
La valeur de @@identity nest pas touche par lchec dune instruction
INSERT ou SELECT INTO, ni par lannulation dune transaction dans

49
laquelle elle figure. La variable conserve en effet la dernire valeur insre
dans une colonne IDENTITY, mme si la validation (COMMIT) de
linstruction layant insre choue.
@@identity et triggers Lorsquune insertion dclenche des actions dintgrit rfrentielle ou un
trigger, @@identity se comporte comme une pile. Par exemple, si une
insertion dans une table T1 (contenant une colonne identity ou
autoincrement) dclenche un trigger qui insre une ligne dans la table T2
(contenant aussi une colonne identity ou autoincrement), la valeur renvoye
lapplication ou la procdure qui a effectu linsertion est la valeur
insre dans T1. Dans le trigger, @@identity a la valeur de T1 avant
linsertion dans T2 et, aprs linsertion, il a la valeur de T2. Le trigger peut
copier les valeurs dans des variables locales si ncessaire.

50
Chapitre 1. Elments de langage SQL

Commentaires
Les commentaires permettent dattacher un texte explicatif des instructions
ou des blocs dinstructions SQL. Le serveur de base de donnes nexcute
pas les commentaires.
Adaptive Server Anywhere offre plusieurs indicateurs de commentaires :
(Double Tiret) Le serveur de base de donnes ignore les caractres
restant sur la ligne. Il sagit de lidentificateur de commentaires SQL/92.
// (Double barre oblique) La signification de la double barre oblique est
identique celle du tiret double.
/* . . . */ (Barre oblique-astrisque) Les caractres compris entre ces
deux marqueurs de commentaire sont ignors. Les deux marqueurs
peuvent se trouver sur des lignes distinctes. Les commentaires faisant
appel cette convention peuvent tre imbriqus. Ces commentaires sont
galement appels commentaires de style C.
% (Signe pourcentage) Si loption Percent_as_comment est active, le
signe pourcentage a la mme signification que le double tiret. Toutefois, il
est recommand de ne pas utiliser % comme indicateur de commentaire.
Normes et compatibilit Les styles de commentaire de type tiret double et barre oblique-astrisque
sont compatibles avec Adaptive Server Enterprise.
Exemples Lexemple suivant illustre lutilisation de commentaires commenant par
un double tiret :
CREATE FUNCTION fullname (firstname CHAR(30),
lastname CHAR(30))
RETURNS CHAR(61)
-- fullname concatenates the firstname and lastname
-- arguments with a single space between.
BEGIN
DECLARE name CHAR(61);
SET name = firstname || || lastname;
RETURN ( name );
END

Lexemple suivant illustre lutilisation de commentaires de style C :


/*
Lists the names and employee IDs of employees
who work in the sales department.
*/
CREATE VIEW SalesEmployee AS
SELECT emp_id, emp_lname, emp_fname
FROM "DBA".employee
WHERE dept_id = 200

51
Valeur NULL
Fonction Spcifie une valeur inconnue ou inapplicable.
Syntaxe NULL

Utilisation Tout contexte.


Autorisations Vous devez tre connect la base de donnes.
Effets secondaires Aucun
Voir aussi Expressions la page 17
Conditions de recherche la page 24
Description La valeur NULL est une valeur spciale, diffrente de toute autre valeur
correcte associe nimporte quel type de donnes. Elle est cependant
admise dans tous les types de donnes. Elle sert reprsenter des
informations manquantes ou inapplicables. Il sagit l de deux cas bien
distincts :

Situation Description

Manquant Le champ contient une valeur, mais celle-ci est inconnue.

Inapplicable Le champ ne sapplique pas cette ligne particulire.


SQL permet de crer des colonnes avec la restriction NOT NULL. Les
colonnes concernes ne peuvent alors pas contenir la valeur NULL.
La valeur NULL introduit le concept de logique ternaire dans SQL. La
valeur NULL, compare laide dun oprateur de comparaison une valeur
quelconque, y compris la valeur NULL, est UNKNOWN. La seule
condition de recherche qui renvoie TRUE est le prdicat IS NULL. Dans
SQL, des lignes ne sont slectionnes que si la condition de recherche de la
clause WHERE renvoie la valeur TRUE ; les lignes renvoyant la valeur
UNKNOWN ou FALSE ne sont pas slectionnes.
Vous pouvez galement faire appel la clause IS [ NOT ] valeur_vrit o
valeur_vrit renvoie la valeur TRUE, FALSE ou UNKNOWN, pour
slectionner des lignes impliquant la valeur NULL. Reportez-vous la
section Conditions de recherche la page 24 pour plus dinformations.
Dans les exemples suivants, la colonne Salary contient NULL.

Condition Valeur de v- Slectionn ?


rit

Salary = NULL UNKNOWN NO

52
Chapitre 1. Elments de langage SQL

Condition Valeur de v- Slectionn ?


rit

Salary <> NULL UNKNOWN NO

NOT (Salary = NULL) UNKNOWN NO

NOT (Salary <> NULL) UNKNOWN NO

Salary = 1000 UNKNOWN NO

Salary IS NULL TRUE YES


Salary IS NOT NULL FALSE NO

Salary = expression IS UNKNOWN TRUE YES

Les mmes rgles sappliquent lorsque vous comparez des colonnes


appartenant deux tables diffrentes. Ainsi, dans le cas de la jointure de
deux tables, les lignes dont une ou plusieurs des colonnes compares
contiennent la valeur NULL ne sont pas slectionnes.
La valeur NULL prsente aussi une proprit intressante lorsquelle est
utilise dans des expressions numriques. Le rsultat de toute expression
numrique impliquant la valeur NULL est NULL. Ceci signifie que si la
valeur NULL est ajoute un nombre, le rsultat est NULL, et non un
nombre. Si vous voulez que la valeur NULL soit traite comme 0 (zro),
vous devez utiliser la fonction ISNULL(expression ,0 ) (voir Fonctions
SQL la page 95).
Nombre derreurs courantes dans la formulation des requtes SQL sont dues
au comportement de la valeur NULL. Il vous faut veiller viter ce type de
problme. La section Conditions de recherche la page 24 dcrit les effets
de la logique ternaire lorsque vous combinez des conditions de recherche.
Oprateurs ensemblistes Dans les oprations ensemblistes (UNION, INTERSECT, EXCEPT), ainsi
et clause DISTINCT que dans lopration DISTINCT, NULL est trait autrement que dans les
conditions de recherche. Les lignes qui contiennent la valeur NULL en tant
par ailleurs identiques sont traites comme identiques pour les besoins de
ces oprations.
Par exemple, si une colonne appele redundant contenait NULL chaque
ligne dune table T1, linstruction suivante renverrait une ligne unique :
SELECT DISTINCT redundant
FROM T1

Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.

53
Sybase Dans certains contextes, Adaptive Server Enterprise traite
NULL comme une valeur, linverse dAdaptive Server Anywhere.
Par exemple, dans Adaptive Server Anywhere, les lignes dune colonne
c1 qui ont la valeur NULL ne sont pas incluses dans les rsultats dune
requte avec la clause WHERE suivante, puisque la condition a la valeur
UNKNOWN :
WHERE NOT( C1 = NULL )

Dans Adaptive Server Enterprise, la condition est value TRUE, et les


lignes sont renvoyes. Pour des raisons de compatibilit, vous devez
utiliser IS NULL au lieu dun oprateur de comparaison.
Dans Adaptive Server Anywhere, des index uniques peuvent contenir des
lignes contenant une valeur NULL et tre identiques. En revanche,
Adaptive Server Enterprise nadmet pas ce type dentre dans des index
uniques.
Si vous utilisez jConnect, loption TDS_EMPTY_STRING_IS_NULL
dtermine si les chanes vides sont renvoyes en tant que chanes NULL
ou comme chanes contenant un espace.
Pour plus dinformations, reportez-vous la section Option
TDS_EMPTY_STRING_IS_NULL [base de donnes] [ASA - Guide
dadministration, page 755].

Exemple Linstruction INSERT ci-aprs permet dinsrer la valeur NULL dans la


colonne date_retour de la table Emprunts_livres.
INSERT
INTO Borrowed_book
( date_borrowed, date_returned, book )
VALUES ( CURRENT DATE, NULL, 1234 )

54
CHAPITRE 2

Types de donnes SQL

Prsentation Ce chapitre dcrit les types de donnes pris en charge par Adaptive Server
Anywhere.
Sommaire Sujet : page

Types de donnes caractres 56


Types de donnes numriques 61

Types de donnes montaires 69

Type de donnes BIT 70

Types de donnes date et heure 71


Types de donnes binaires 78

Domaines 81

Conversions de types de donnes 83

Conversion de types de donnes Java et SQL 86

Conformit An 2000 89

55
Types de donnes caractres
Fonction Stocker des chanes de lettres, de nombres et de symboles.
Description Adaptive Server Anywhere considre les colonnes CHAR, VARCHAR et
LONG VARCHAR comme appartenant toutes au mme type. Les valeurs
comportant moins de 255 caractres sont stockes en tant que chanes
courtes et prcdes dun octet indiquant leur longueur. Les autres sont
traites comme des chanes longues : tous les caractres au-del du 255e
sont stocks sur une ligne diffrente de celle laquelle ils appartiennent.
Plusieurs fonctions (voir Fonctions SQL la page 95) ignorent la partie
dune chane au-del du 255e caractre. Il sagit des fonctions SOUNDEX,
SIMILAR et de toutes les fonctions date. De la mme manire, les
oprations arithmtiques impliquant la conversion dune chane longue en
nombre ne prennent en compte que les 255 premiers caractres. Cependant,
ces limitations sont extrmement rares.
Toutes les autres fonctions et tous les autres oprateurs exploitent la
longueur maximale des chanes longues.
Jeux de caractres et Les donnes de type caractre sont intgres dans la base de donnes telles
pages de code quelles proviennent de lapplication. Cela signifie que les donnes stockes
sont codes sous forme binaire daprs la page de code courante. La page de
code est la reprsentation du jeu de caractres utilise par les PC
compatibles IBM. Pour plus dinformations sur les pages de code,
reportez-vous la documentation de votre systme dexploitation.
Les 128 premiers caractres de toutes les pages de code sont identiques. Si
vous utilisez des caractres spciaux situs dans la moiti suprieure de la
page de code (caractres accentus internationaux), vous devez faire
attention la portabilit de vos bases de donnes. En effet, si vous copiez
une base sur un ordinateur qui utilise une page de code diffrente, ces
caractres spciaux seront interprts par rapport leur valeur dans la page
dorigine. Leur reprsentation lcran, base sur la nouvelle page de code,
est donc inexacte.
Ce problme survient galement lorsque deux clients utilisent le mme
serveur multi-utilisateur, mais exploitent des pages de code diffrentes. Les
donnes insres ou mises jour par un client peuvent paratre errones
lautre.
La mme difficult se prsente si vous utilisez une base de donnes sur
plusieurs plates-formes. Lorsque PowerBuilder et dautres applications
Windows insrent des donnes dans la base, elles utilisent le jeu de
caractres ANSI. Si des applications non-Windows tentent dexploiter ces
donnes, les caractres tendus ne sont pas correctement affichs ou mis

56
Chapitre 2. Types de donnes SQL

jour.
Il sagit dune question relativement complexe. Si certaines de vos
applications utilisent les caractres tendus de la moiti suprieure de la
page de code, assurez-vous que tous les clients et tous les ordinateurs qui se
servent de la base de donnes emploient la mme page ou, au moins une
page compatible.
Remarques La longueur dun type de donnes caractre doit tre suprieure 1.
Compatibilit Adaptive Server Enterprise ne prend pas en charge CHARACTER (n),
qui est une alternative CHAR.
Il ne prend pas non plus en charge les types NCHAR et NVARCHAR
fournis par Adaptive Server Enterprise.

Type de donnes CHAR [Caractre]


Fonction Donnes de type caractre dont la taille nexcde pas longueur_maximale
octets.
Syntaxe { CHAR | CHARACTER } [ ( longueur_maximale ) ]

Utilisation La valeur par dfaut de longueur_maximale est 1.


Pour les chanes dune longueur maximale de 254 octets, lespace de
stockage requis correspond au nombre doctets contenus dans la chane plus
un octet supplmentaire. Pour les chanes plus longues, on dispose de plus
doverhead.
Les chanes comportant des caractres multi-octet peuvent tre considres
comme appartenant au type de donnes CHAR, mais longueur_maximale
est exprime en octets et non en caractres.
Paramtres longueur_maximale Longueur maximale de la chane, en octets. La taille
maximale autorise est 32 767.
Normes et compatibilit SQL/92 pris en charge par SQL/92.
Sybase Compatible avec Adaptive Server Enterprise. Dans Adaptive
Server Enterprise, lespace requis pour le stockage des types de donnes
CHAR est toujours longueur_maximale. La longueur_maximale pour
Adaptive Server Enterprise est 255.
Autres systmes de base de donnes Dans la plupart des autres
systmes de gestion de base de donnes, contrairement Adaptive Server
Anywhere, la totalit des chanes comprenant des types de donnes
CHAR sont compltes par des blancs. Les types de donnes CHAR
ncessitent, par consquent, une longueur_maximale doctets de
stockage, quelle que soit la vritable longueur de la chane.

57
Voir aussi Type de donnes CHARACTER VARYING (VARCHAR) [Caractre]
la page 58
Type de donnes LONG VARCHAR [Caractre] la page 58

Type de donnes CHARACTER VARYING (VARCHAR) [Caractre]


Fonction Identique celle de CHAR.
Syntaxe { VARCHAR | CHARACTER VARYING } [ ( longueur_maximale ) ]

Utilisation La valeur par dfaut de longueur_maximale est 1.


Pour les chanes dune longueur maximale de 254 octets, lespace de
stockage requis correspond au nombre doctets contenus dans la chane plus
un octet supplmentaire. Pour les chanes plus longues, on dispose de plus
doverhead.
Les chanes comportant des caractres multi-octet peuvent tre considres
comme appartenant au type de donnes CHAR, mais longueur_maximale
est exprime en octets et non en caractres.
Paramtres longueur_maximale Longueur maximale de la chane, en octets. La taille
maximale autorise est 32 767.
Normes et compatibilit SQL/92 pris en charge par SQL/92.
Sybase Compatible avec Adaptive Server Enterprise. La
longueur_maximale pour Adaptive Server Enterprise est 255.
Voir aussi Type de donnes CHAR [Caractre] la page 57
Type de donnes LONG VARCHAR [Caractre] la page 58

Type de donnes LONG VARCHAR [Caractre]


Fonction Donnes de type caractre de longueur arbitraire.
Syntaxe LONG VARCHAR

Utilisation Chanes de longueur arbitraire. La taille maximale est limite par celle du
fichier de base de donnes (actuellement, 2 Go).
Outre la longueur de la chane elle-mme, on dispose doverhead
supplmentaire pour le stockage.
Normes et compatibilit SQL/92 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi Type de donnes CHAR [Caractre] la page 57

58
Chapitre 2. Types de donnes SQL

Type de donnes CHARACTER VARYING (VARCHAR) [Caractre]


la page 58

Type de donnes TEXT [Caractre]


Fonction Il sagit dun domaine. Il est mis en oeuvre en tant que LONG VARCHAR
autorisant la valeur NULL.
Syntaxe TEXT

Utilisation Chanes de longueur arbitraire. Mme utilisation que pour LONG


VARCHAR.
Normes et compatibilit SQL/92 Extension propritaire.

Sybase Compatible avec Adaptive Server Enterprise.


Voir aussi Type de donnes LONG VARCHAR [Caractre] la page 58

Type de donnes UNIQUEIDENTIFIERSTR [Caractre]


Fonction Il sagit dun domaine. Il est mis en oeuvre en tant que CHAR( 36 ).
Syntaxe UNIQUEIDENTIFIERSTR

Utilisation Ce type de donnes est utilis pour laccs aux donnes distance, lors du
mappage de colonnes didentificateur unique SQL Server.
Normes et compatibilit SQL/92 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi Conversion des types de donnes : Microsoft SQL Server [ASA - Guide
de lutilisateur SQL, page 693]
STRTOUUID (fonction de chane de caractres) la page 238

Type de donnes XML [Caractre]


Fonction Domaine, mis en oeuvre en tant que type LONG VARCHAR.
Syntaxe XML
Utilisation XML est fourni pour le stockage de documents XML dans une base de
donnes Adaptive Server Anywhere. Les donnes de type XML ne sont pas
mises entre guillemets lors de la gnration du contenu dun lment partir
de donnes relationnelles.
Vous pouvez effectuer des conversions entre le type de donnes XML et tout
autre type de donnes convertible vers ou depuis une chane. Notez quaucun

59
contrle nest effectu pour vrifier que la chane est correctement forme
avant sa conversion en XML.
Pour plus dinformations sur lutilisation du type de donnes XML lors
de la gnration dlments XML, reportez-vous la section Stockage de
documents XML dans des bases de donnes relationnelles [ASA - Guide de
lutilisateur SQL, page 553].

Normes et compatibilit Partie de lavant-projet de norme SQL/XML.

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi Type de donnes LONG VARCHAR [Caractre] la page 58

60
Chapitre 2. Types de donnes SQL

Types de donnes numriques


Fonction Stocker des donnes numriques.
Remarques Les types de donnes NUMERIC et DECIMAL et les diffrents types
dentier (INTEGER) sont parfois appels types de donnes numriques
exacts par opposition aux types arrondis tels que FLOAT, DOUBLE et
REAL.
Les types exacts permettent de spcifier des valeurs de prcision et
dchelle, tandis le mode de stockage des types arrondis est prdfini.
Aprs une opration numrique, la prcision jusquau chiffre le moins
significatif nest garantie que pour des donnes numriques exactes.
Avant la version 5.5, les constantes hexadcimales de plus de
quatre octets taient traites comme des constantes de chane, tandis que
les autres taient gres comme des entiers. A prsent, elles sont
considres par dfaut comme des constantes de type binaire. Pour
ractiver lancien comportement, fixez OFF loption de base de donnes
TSQL_HEX_CONSTANTS.
La longueur et la prcision dun type de donnes doivent tre suprieures
1.

Compatibilit Seuls les types de donnes numriques dont le nombre de chiffres aprs
la virgule est gal 0 (chelle = 0) peuvent figurer dans la colonne
identity de Transact-SQL.
Vous devez viter les paramtres de prcision et dchelle par dfaut pour
les types NUMERIC et DECIMAL car ils sont diffrents entre Adaptive
Server Anywhere et Adaptive Server Enterprise. Dans Adaptive Server
Anywhere, la prcision par dfaut est 30 et lchelle par dfaut, 6. En
revanche, dans Adaptive Server Enterprise, ces valeurs sont
respectivement 18 et 0 .

Le type de donnes FLOAT (p ) est synonyme de REAL ou de DOUBLE


selon la prcision dfinie. Dans Adaptive Server Enterprise, la prcision
de REAL est infrieure ou gale 15, tandis que celle de DOUBLE est
suprieure cette valeur. Dans Adaptive Server Anywhere, la valeur seuil
dpend de la plate-forme utilise, mais elle est toujours suprieure 15.
Pour plus dinformations sur la modification des valeurs par dfaut par
le biais doptions de base de donnes, reportez-vous aux sections Option
PRECISION [base de donnes] [ASA - Guide dadministration, page 742] et
Option SCALE [base de donnes] [ASA - Guide dadministration, page 750].

61
Type de donnes BIGINT [Numrique]
Fonction Entier stock sur 8 octets.
Syntaxe [ UNSIGNED ] BIGINT

Utilisation BIGINT est un type de donnes numrique exact : il conserve sa prcision


une fois les oprations arithmtiques effectues.
La valeur BIGINT requiert un stockage sur 8 octets.
Les valeurs BIGINT signes peuvent tre comprises entre 263 et 263 1 ou
entre 9223372036854775808 et 9223372036854775807.
Quant aux valeurs BIGINT non signes, elles peuvent tre comprise entre 0
et 264 1 ou entre 0 et 18446744073709551615.
Par dfaut, le type de donnes est sign.
Normes et compatibilit SQL/92 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi Type de donnes INT ou INTEGER [Numrique] la page 65
Type de donnes TINYINT [Numrique] la page 67
Type de donnes SMALLINT [Numrique] la page 66

Type de donnes DECIMAL [Numrique]


Fonction Nombre dcimal comportant un nombre total de chiffres gal prcision et
un nombre de chiffres aprs la virgule gal chelle.
Syntaxe { DECIMAL | DEC } [ ( prcision [ , chelle ] ) ]

Utilisation decimal est un type de donnes numrique exact : une fois les oprations
arithmtiques effectues, il conserve sa prcision jusquau chiffre le moins
significatif.
Lespace ncessaire pour stocker un nombre dcimal peut se calculer comme
suit :
2 + int( (before + 1)/2 ) + int( (after + 1)/2 )

o la fonction int ne garde que la partie entire de son argument ; before et


after reprsentent le nombre de chiffres significatifs avant et aprs la
virgule. Le stockage repose sur la valeur en cours de stockage et non sur les
prcision et chelle maximales autorises dans la colonne.
Paramtres prcision Expression dentier indiquant le nombre de chiffres contenus
dans lexpression. La valeur par dfaut est 30.

62
Chapitre 2. Types de donnes SQL

chelle Expression dentier indiquant le nombre de chiffres aprs la


virgule. La valeur par dfaut est 6.
Vous pouvez modifier les valeurs par dfaut en paramtrant les options de la
base de donnes. Pour plus dinformations, reportez-vous aux sections
Option PRECISION [base de donnes] [ASA - Guide dadministration,
page 742] et Option SCALE [base de donnes] [ASA - Guide
dadministration, page 750].

Normes et compatibilit SQL/92 pris en charge par SQL/92.


Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi Type de donnes FLOAT [Numrique] la page 63
Type de donnes REAL [Numrique] la page 66
Type de donnes DOUBLE [Numrique] la page 63

Type de donnes DOUBLE [Numrique]


Fonction Nombre en virgule flottante en double prcision.
Syntaxe DOUBLE [ PRECISION ]

Utilisation Le type de donnes DOUBLE conserve un nombre en virgule flottante en


double prcision. Du fait quil sagit dun type arrondi, il est possible de
constater des erreurs darrondi aprs des oprations arithmtiques. La nature
approximative des valeurs DOUBLE signifie quil faut gnralement viter
les requtes utilisant des galits lors de la comparaison de valeurs
DOUBLE.
Les valeurs DOUBLE requirent un stockage sur 8 octets.
Les valeurs autorises sont comprises entre 2.22507385850721e-308 et
1.79769313486231e+308. La prcision des valeurs de type DOUBLE est
conserve jusqu 15 chiffres significatifs ; au-del, ces nombres peuvent
prsenter une erreur darrondi.
Normes et compatibilit SQL/92 pris en charge par SQL/92.

Sybase Compatible avec Adaptive Server Enterprise.


Voir aussi Type de donnes FLOAT [Numrique] la page 63
Type de donnes REAL [Numrique] la page 66
Type de donnes DECIMAL [Numrique] la page 62

Type de donnes FLOAT [Numrique]


Fonction Nombre en virgule flottante en simple ou double prcision.

63
Syntaxe FLOAT [ ( prcision ) ]

Utilisation Lorsquune colonne est cre avec le type de donnes FLOAT (prcision ),
vous avez lassurance quelle contiendra, sur toutes les plates-formes, des
valeurs ayant au moins la prcision minimale spcifie. Ce nest pas le cas
de REAL et de DOUBLE, qui ne garantissent pas une prcision minimale
dune plate-forme une autre.
Si prcision nest pas fournie, le type de donnes FLOAT est un nombre en
virgule flottante en simple prcision, qui quivaut au type de donnes REAL
et requiert un stockage sur 4 octets.
Si prcision est fournie, le type de donnes FLOAT peut tre en simple ou en
double prcision, selon la valeur de la prcision indique. La diffrence entre
REAL et DOUBLE dpend de la plate-forme. Les types de donnes FLOAT
en simple prcision requirent un stockage sur 4 octets et les types de
donnes FLOAT en double prcision requirent un stockage sur 8 octets.
Le type de donnes FLOAT est un type de donnes numriques arrondi. Il
est possible de constater des erreurs darrondi aprs des oprations
arithmtiques. La nature approximative des valeurs FLOAT signifie quil
faut gnralement viter les requtes utilisant des galits lors de la
comparaison de valeurs FLOAT.
Paramtres prcision Expression dentier indiquant le nombre de bits contenus dans la
mantisse. La mantisse est la partie dcimale dun logarithme. Par exemple,
dans le logarithme 5,63428, la mantisse est 0,63428. La prcision en virgule
flottante conforme la norme IEEE 754 est la suivante :

Valeur de pr- Prcision dci- Type de donnes Taille de sto-


cision fournie male SQL quivalent ckage

1-24 7 dcimales REAL 4 octets

25-53 15 dcimales DOUBLE 8 octets


Normes et compatibilit SQL/92 pris en charge par SQL/92.
Sybase Vous pouvez optimiser le fonctionnement du type de donnes
FLOAT pour la prise en charge par Adaptive Server Enterprise, en
utilisant lOption FLOAT_AS_DOUBLE [compatibilit] [ASA - Guide
dadministration, page 713].

Voir aussi Type de donnes DECIMAL [Numrique] la page 62


Type de donnes REAL [Numrique] la page 66
Type de donnes DOUBLE [Numrique] la page 63

64
Chapitre 2. Types de donnes SQL

Type de donnes INT ou INTEGER [Numrique]


Fonction Entier stock sur 4 octets.
Syntaxe [ UNSIGNED ] { INT | INTEGER }

Utilisation integer est un type de donnes numrique exact : sa prcision est conserve
une fois les oprations arithmtiques effectues.
Si vous spcifiez UNSIGNED ; vous ne pouvez jamais attribuer de valeur
ngative lentier. Par dfaut, le type de donnes est sign.
Les entiers signs peuvent tre compris entre 231 et 231 1, ou entre
2147483648 et 2147483647.
Quant aux entiers non signs, ils peuvent tre compris entre 0 et 232 1 ou
entre 0 et 4294967295.
Normes et compatibilit SQL/92 pris en charge par SQL/92. Le mot-cl UNSIGNED est une
Extension propritaire.
Sybase Le type de donnes sign est pris en charge par Adaptive
Server Enterprise. Adaptive Server Enterprise ne prend pas en charge le
type de donnes UNSIGNED.
Voir aussi Type de donnes BIGINT [Numrique] la page 62
Type de donnes TINYINT [Numrique] la page 67
Type de donnes SMALLINT [Numrique] la page 66

Type de donnes NUMERIC [Numrique]


Fonction Identique celle de DECIMAL.
Syntaxe NUMERIC [ ( prcision [ , chelle ] ) ]

Utilisation Le type de donnes NUMERIC est un type de donnes numrique exact qui
conserve sa prcision jusquau chiffre le moins significatif, une fois les
oprations arithmtiques effectues.
Lespace ncessaire pour stocker un nombre dcimal peut se calculer comme
suit :
2 + int( (before+1)/2 ) + int( (after+1)/2 )

o la fonction int ne garde que la partie entire de son argument ; avant et


aprs reprsentent le nombre de chiffres significatifs avant et aprs la
virgule. Le stockage repose sur la valeur en cours de stockage et non sur les
prcision et chelle maximales autorises dans la colonne.

65
Paramtres prcision Expression dentier indiquant le nombre de chiffres contenus
dans lexpression. La valeur par dfaut est 30.
chelle Expression dentier indiquant le nombre de chiffres aprs la
virgule. La valeur par dfaut est 6.
Vous pouvez modifier les valeurs par dfaut en paramtrant les options de la
base de donnes. Pour plus dinformations, reportez-vous aux sections
Option PRECISION [base de donnes] [ASA - Guide dadministration,
page 742] et Option SCALE [base de donnes] [ASA - Guide
dadministration, page 750].

Normes et compatibilit SQL/92 pris en charge par SQL/92, si la valeur de loption SCALE est
0.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi Type de donnes FLOAT [Numrique] la page 63
Type de donnes REAL [Numrique] la page 66
Type de donnes DOUBLE [Numrique] la page 63

Type de donnes REAL [Numrique]


Fonction Nombre en virgule flottante en simple prcision stock sur 4 octets.
Syntaxe REAL

Utilisation REAL est un type de donnes numrique arrondi. Il est donc possible de
constater des erreurs darrondi aprs des oprations arithmtiques.
Les valeurs autorises sont comprises entre -3,402823e+38 et 3,402823e+38,
les nombres proches de zro pouvant aller jusqu 1,175495e-38. Les valeurs
stockes en tant que REAL offrent une prcision 10 chiffres significatifs
mais peuvent prsenter une erreur darrondi au-del du sixime chiffre.
La nature approximative des valeurs REAL implique quil faut gnralement
viter les requtes utilisant des galits lors de la comparaison de valeurs
REAL.
Normes et compatibilit SQL/92 pris en charge par SQL/92.
Sybase Compatible avec Adaptive Server Enterprise.

Type de donnes SMALLINT [Numrique]


Fonction Entier stock sur 2 octets.
Syntaxe [ UNSIGNED ] SMALLINT

66
Chapitre 2. Types de donnes SQL

Utilisation smallint est un type de donnes numrique exact : sa prcision est conserve
aprs calcul. Il requiert un stockage sur 2 octets.
Les valeurs SMALLINT signes peuvent tre comprises entre 215 et 215
1 entre 32768 et 32767.
Quant aux valeurs SMALLINT non signes, elles peuvent tre comprises
entre 0 et 216 1 ou entre 0 et 65535.
Normes et compatibilit SQL/92 pris en charge par SQL/92. Le mot-cl UNSIGNED est une
Extension propritaire.
Sybase Le type de donnes sign est pris en charge par Adaptive
Server Enterprise. Adaptive Server Enterprise ne prend pas en charge le
type de donnes UNSIGNED.
Voir aussi Type de donnes INT ou INTEGER [Numrique] la page 65
Type de donnes TINYINT [Numrique] la page 67
Type de donnes BIGINT [Numrique] la page 62

Type de donnes TINYINT [Numrique]


Fonction Entier non sign, stock sur 1 octet.
Syntaxe [ UNSIGNED ] TINYINT

Utilisation tinyint est un type de donnes numrique exact : sa prcision est conserve
aprs calcul.
Vous pouvez attribuer des entiers TINYINT la proprit unsigned,
toutefois elle reste inoprante car ce type est par nature non sign.
Les valeurs TINYINT peuvent tre comprises entre 0 et 28 1 ou entre 0
et 255.
La valeur de colonnes TINYINT ne doit pas tre affecte des variables
Embedded SQL dfinies comme char ou unsigned char. En effet, le systme
tente de convertir la valeur de la colonne en une chane, puis dattribuer le
premier octet la variable du programme. Les colonnes TINYINT doivent
tre affectes des colonnes dentiers stocks sur 2 ou 4 octets lors de leur
lecture. Dautre part, pour quune valeur TINYINT puisse tre adresse
une base de donnes depuis une application crite en langage C, il est
ncessaire que la variable C soit un entier.
Normes et compatibilit SQL/92 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi Type de donnes BIGINT [Numrique] la page 62
Type de donnes TINYINT [Numrique] la page 67

67
Type de donnes SMALLINT [Numrique] la page 66

68
Chapitre 2. Types de donnes SQL

Types de donnes montaires


Fonction Stocker des donnes montaires.

Type de donnes MONEY [Montaire]


Fonction Compatible avec le type de donnes MONEY dAdaptive Server Enterprise,
il permet de stocker des donnes montaires.
Syntaxe MONEY

Utilisation Le type de donnes MONEY est mis en oeuvre comme NUMERIC(19,4),


autorisant les valeurs NULL.
Normes et compatibilit SQL/92 Extension propritaire.
Sybase Dans Adaptive Server Anywhere, les types de donnes
montaires sont mis en oeuvre en tant que domaines et sont destins
assurer la compatibilit avec Adaptive Server Enterprise.

Voir aussi Type de donnes SMALLMONEY [Montaire] la page 69

Type de donnes SMALLMONEY [Montaire]


Fonction Ce type de donnes permet de stocker des donnes montaires de faible
valeur et est compatible avec le type de donnes SMALLMONEY
dAdaptive Server Enterprise.
Syntaxe SMALLMONEY

Utilisation Le type de donnes SMALLMONEY est mis en oeuvre dans Adaptive


Server Anywhere en tant que domaine, comme NUMERIC(10,4), acceptant
les valeurs NULL.
Les valeurs SMALLMONEY peuvent tre comprises entre -214 748,3648 et
214 748,3647.
Normes et compatibilit SQL/92 Extension propritaire.
Sybase Dans Adaptive Server Anywhere, les types de donnes
montaires sont mis en oeuvre en tant que domaines et sont destins
assurer la compatibilit avec Adaptive Server Enterprise.
Voir aussi Type de donnes MONEY [Montaire] la page 69

69
Type de donnes BIT
Fonction Pour le stockage de valeurs boolennes (0 ou 1).
Syntaxe BIT

Utilisation Par dfaut, les colonnes de type BIT nacceptent pas les valeurs NULL. Ce
comportement diffre des autres types. Vous pouvez explicitement autoriser
la valeur NULL, si vous le souhaitez.
Les valeurs admises sont 0 et 1.
Normes et compatibilit SQL/92 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.

70
Chapitre 2. Types de donnes SQL

Types de donnes date et heure


Fonction Stocker les dates et les heures.

Envoi de dates et dheures la base de donnes


Vous pouvez envoyer des dates et des heures la base de donnes comme
suit :
au moyen dune interface, en tant que chanes ;
laide dODBC, en tant que structures TIMESTAMP ;
laide dEmbedded SQL, en tant que structures SQLDATETIME.
Lorsque vous envoyez un horaire la base de donnes, sous la forme dune
chane (pour le type TIME) ou dune partie de chane (pour les types
TIMESTAMP et DATE), les heures, les minutes et les secondes doivent tre
spares par le signe deux-points (:). Elles doivent respecter le format
hh :mm :ss.sss, mais peuvent apparatre nimporte o dans la chane.
Exemples de chanes horaires correctes et non ambigus :
21:35 -- 24 hour clock if no am or pm specified
10:00pm -- pm specified, so interpreted as 12 hour clock
10:00 -- 10:00am in the absence of pm
10:23:32.234 -- seconds and fractions of a second included

Lorsque vous envoyez une date la base de donnes sous la forme dune
chane, elle est automatiquement convertie en type DATE. La chane peut
tre transmise comme suit :
sous la forme dune chane aaaa/mm/jj ou aaaa-mm-jj, interprte sans
quivoque par la base de donnes ;
sous la forme dune chane interprte en fonction de loption de base de
donnes DATE_ORDER.

Compatibilit Transact-SQL des conversions du type chane en type date/heure

Adaptive Server Anywhere et Adaptive Server Enterprise se comportent


diffremment en matire de conversion de chanes de caractres en chanes
de type date et time.
Si une chane de caractres contenant uniquement une heure (sans date) est
convertie en donnes de type date/heure, Adaptive Server Enterprise utilise
le 1er janvier 1900 comme date par dfaut, tandis quAdaptive Server
Anywhere se sert de la date du jour.
Si la partie fraction est infrieure 3 chiffres, Adaptive Server Enterprise
interprte la valeur diffremment selon quelle est prcde dun point (.) ou

71
de deux points (:). Dans le cas du point (.), un seul chiffre reprsente des
diximes de seconde, deux chiffres des centimes et trois chiffres, des
millimes. Dans le cas du deux-points (:), la valeur reprsente toujours des
millimes de seconde. Adaptive Server Anywhere, quant lui, interprte la
valeur de la mme manire, quel que soit le sparateur.
Exemples Adaptive Server Enterprise convertit les valeurs suivantes comme suit : La
seconde ligne de chaque paire diffre quant lutilisation du signe
deux-points au lieu du point.
12:34:56.7 to 12:34:56.700
12:34:56:7 to 12:34:56.007
12.34.56.78 to 12:34:56.780
12.34.56:78 to 12:34:56.078
12:34:56.789 to 12:34:56.789
12:34:56:789 to 12:34:56.789

Adaptive Server Anywhere convertit la valeur des millisecondes comme le


fait Adaptive Server Enterprise pour les valeurs prcdes dun point, dans
les deux cas :
12:34:56.7 to 12:34:56.700
12:34:56:7 to 12:34:56.700
12.34.56.78 to 12:34:56.780
12.34.56:78 to 12:34:56.780
12:34:56.789 to 12:34:56.789
12:34:56:789 to 12:34:56.789

Rcupration de dates et dheures de la base de donnes


Il existe plusieurs mthodes de rcupration des dates et heures de la base de
donnes :
au moyen dune interface, en tant que chanes ;

laide dODBC, en tant que structures TIMESTAMP ;


laide dEmbedded SQL, en tant que structures SQLDATETIME.
Lorsque vous rcuprez une date ou une heure sous la forme dune chane,
son format est dtermin par les options de base de donnes
DATE_FORMAT, TIME_FORMAT et TIMESTAMP_FORMAT. Pour plus
dinformations sur ces options, reportez-vous la section Instruction SET
OPTION la page 644.
Pour plus dinformations sur les fonctions en rapport avec la date et
lheure, reportez-vous la section Fonctions de date et dheure la
page 98. Les oprateurs arithmtiques autoriss avec des dates sont les
suivants :

72
Chapitre 2. Types de donnes SQL

timestamp + integer Ajoute le nombre de jours spcifi une date ou


une estampille.
timestamp - integer Soustrait le nombre de jours spcifi dune date ou
dune estampille.
date - date - date Calcule le nombre de jours entre deux dates ou
estampilles.
date + time Cre une estampille combinant la date et lheure spcifies.

Comparaison de dates et dheures dans la base de donnes


Par dfaut, les valeurs stockes en tant que DATE ne mentionnent pas
dheure ni de minutes, de sorte que la comparaison des dates seffectue
directement.
Si vous dfinissez loption TRUNCATE_DATE_VALUES OFF, le type de
donnes DATE contient aussi des heures, ce qui complique les comparaisons
de dates. Si lheure est omise lors de la saisie dune date dans la base de
donnes, la valeur par dfaut est 0:00 ou 12:00am (minuit). Lorsque cette
option est active, les comparaisons portent sur les dates ainsi que sur les
heures. Une valeur de date de base de donnes gale 1999-05-23 10:00
nest pas gale la constante 1999-05-23. Plusieurs fonctions de date, dont
DATEFORMAT, permettent de comparer des parties des champs date et
heure. Par exemple :
DATEFORMAT(invoice_date,yyyy/mm/dd) = 1999/05/23

Si une colonne de la base de donnes requiert uniquement une date, les


applications clientes doivent vrifier quaucune heure nest spcifie lors de
la saisie dune date dans la base de donnes. Ainsi, les comparaisons avec
les chanes contenant uniquement des dates donneront les rsultats prvus.
Si vous souhaitez comparer une date une chane en tant que chane, vous
devez utiliser la fonction DATEFORMAT ou CAST pour convertir la date en
chane avant la comparaison.

Utilisation de dates et dheures non ambigus


Les dates crites au format aaaa/mm/jj ou aaaa-mm-jj sont toujours
reconnues sans quivoque comme des dates, quelle que soit la valeur de
loption DATE_ORDER. Dautres caractres sont utilisables comme
sparateurs, la place de / or - ; par exemple ?, un espace ou ,.
Utilisez ce format si plusieurs utilisateurs sont susceptibles demployer des
paramtrages de DATE_ORDER diffrents. Dans les procdures stockes,
par exemple, lemploi dun format de date non ambigu permet dviter toute

73
interprtation errone des donnes par rapport la valeur de loption
DATE_ORDER de lutilisateur.
De la mme manire, une chane au format hh :mm :ss.sss est interprte
sans ambigut comme une heure.
Toute combinaison dune date et dune heure non ambigus gnre une
valeur date-heure sans quivoque. Ainsi, le format
YYYY-MM-DD HH.MM.SS.SSS

identifie une valeur date-heure sans quivoque. Lheure peut comporter des
points (.) uniquement si elle est combine avec une date.
Il est possible, dans dautres contextes, dutiliser un format de date plus
souple. Adaptive Server Anywhere peut interprter un large ventail de
chanes en tant que dates. Cette interprtation dpend du paramtrage de
loption de base de donnes DATE_ORDER. La valeur de DATE_ORDER
peut tre MDY, YMD ou DMY (voir Instruction SET OPTION la
page 644). Par exemple, linstruction suivante valide la valeur DMY :
SET OPTION DATE_ORDER = DMY ;

La valeur par dfaut de DATE_ORDER est YMD. Le pilote ODBC valide


cette valeur lors de ltablissement dune connexion. Vous pouvez toujours
modifier ce paramtrage laide de linstruction SET TEMPORARY
OPTION.
Loption DATE_ORDER dtermine la faon dont la base de donnes
interprte la chane 10/11/12 : novembre 2010, 11 octobre 2012 ou
10 novembre 2012. Lanne, le mois et le jour dune chane de date doivent
tre spars par des caractres spcifiques (par exemple, la barre oblique, le
tiret ou lespace) et apparatre dans lordre dfini par loption
DATE_ORDER.
Lanne peut tre indique en 2 ou 4 chiffres. La valeur de loption
NEAREST_CENTURY a une incidence sur linterprtation des annes en
2 chiffres : 2000 est ajout aux valeurs infrieures celle de
NEAREST_CENTURY et 1900, aux autres valeurs. La valeur par dfaut de
cette option est 50. Ainsi, par dfaut, lanne 50 est interprte comme 1950
et lanne 49, comme 2049.
Le mois est spcifi par son nom ou par son numro. Le signe
deux-points (:) spare les heures et les minutes, mais la valeur des heures et
des minutes peut figurer nimporte o dans la chane.
Remarques Il est conseill de toujours spcifier lanne dans un format quatre
chiffres.
Pour plus dinformations sur les problmes de conformit avec lan 2000,

74
Chapitre 2. Types de donnes SQL

reportez-vous la section Conformit An 2000 la page 89.


Avec un paramtrage appropri de DATE_ORDER, les chanes suivantes
reprsentent toutes des dates correctes :
99-05-23 21:35
99/5/23
1999/05/23
May 23 1999
23-May-1999
Tuesday May 23, 1999 10:00pm

Si une chane contient uniquement une date partielle, des valeurs par
dfaut sont utilises pour remplir les parties manquantes. Les valeurs par
dfaut utilises sont les suivantes :
anne Anne en cours.
mois Aucune valeur par dfaut.
jour 1 (utile pour les champs mois ; par exemple, Mai 1999 donne
la date 1999-05-01 00:00).
heures, minutes, secondes, fractions de seconde 0

Type de donnes DATE [Date et heure]


Fonction Date calendaire, telle quanne, mois et jour.
Syntaxe DATE

Utilisation Lanne peut tre comprise entre 0001 et 9999. Dans Adaptive Server
Anywhere, la date minimale est 0001-01-01 00:00:00.
Pour des raisons historiques, une colonne DATE peut aussi contenir lheure
et les minutes lorsque loption TRUNCATE_DATE_VALUES est dfinie
OFF. Il est recommand dutiliser le type TIMESTAMP pour toute valeur
contenant des heures et des minutes.
Le format dans lequel les valeurs de DATE sont rcupres est dtermin par
le paramtre DATE_FORMAT. Ainsi, la date 19 juillet 2003 peut tre
renvoye une application sous la forme 2003/07/19, Jul 19, 2003, ou
une des nombreuses autres formes possibles.
Le mode dinterprtation dune date par le serveur est dtermin par loption
DATE_ORDER. Ainsi, selon la valeur de DATE_ORDER, la date
02/05/2002 fournie par une application pour une valeur DATE peut tre
interprte dans la base comme le 2 mai ou le 5 fvrier.
Les valeurs DATE sont stockes sur 4 octets.
Normes et compatibilit SQL/92 Extension propritaire.

75
Sybase Prise en charge par Adaptive Server Enterprise versions 12.5.1
et ultrieures.

Voir aussi Option DATE_FORMAT [compatibilit] [ASA - Guide dadministration,


page 704]
Option DATE_ORDER [compatibilit] [ASA - Guide dadministration,
page 705]
Type de donnes DATETIME [Date et heure] la page 76
Type de donnes SMALLDATETIME [Date et heure] la page 76
Type de donnes TIMESTAMP [Date et heure] la page 77
Option TRUNCATE_DATE_VALUES [base de donnes]
(dconseille) [ASA - Guide dadministration, page 758]

Type de donnes DATETIME [Date et heure]


Fonction Domaine, mis en oeuvre en tant que type TIMESTAMP.
Syntaxe DATETIME

Utilisation Ce type de donnes est compatible avec Adaptive Server Enterprise.


Normes et compatibilit SQL/92 Extension propritaire.

Sybase Compatible avec Adaptive Server Enterprise. Pour une


exception, reportez-vous la section Compatibilit Transact-SQL des
conversions du type chane en type date/heure la page 71.
Voir aussi Type de donnes DATE [Date et heure] la page 75
Type de donnes SMALLDATETIME [Date et heure] la page 76
Type de donnes TIMESTAMP [Date et heure] la page 77

Type de donnes SMALLDATETIME [Date et heure]


Fonction Domaine, mis en oeuvre en tant que type TIMESTAMP.
Syntaxe SMALLDATETIME

Utilisation Ce type de donnes est compatible avec Adaptive Server Enterprise.


Normes et compatibilit SQL/92 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise. Pour une
exception, reportez-vous la section Compatibilit Transact-SQL des
conversions du type chane en type date/heure la page 71.
Voir aussi Type de donnes DATE [Date et heure] la page 75
Type de donnes DATETIME [Date et heure] la page 76
Type de donnes TIMESTAMP [Date et heure] la page 77

76
Chapitre 2. Types de donnes SQL

Type de donnes TIME [Date et heure]


Fonction Heure de la journe contenant lheure, les minutes, les secondes et les
fractions de seconde.
Syntaxe TIME

Utilisation La prcision des fractions est de 6 dcimales. Une valeur TIME est stocke
sur 8 octets. (Les normes ODBC limitent la prcision du type de donnes
TIME la seconde prs. Il est donc dconseill dutiliser des valeurs TIME
dans une clause WHERE qui effectue des comparaisons bases sur une
prcision suprieure la seconde.)
Normes et compatibilit SQL/92 Extension propritaire.
Sybase Prise en charge par Adaptive Server Enterprise versions 12.5.1
et ultrieures.
Voir aussi Type de donnes TIMESTAMP [Date et heure] la page 77

Type de donnes TIMESTAMP [Date et heure]


Fonction Type de donnes contenant lanne, le mois, le jour, lheure, les minutes, les
secondes et les fractions de seconde.
Syntaxe TIMESTAMP

Utilisation La prcision des fractions est de 6 dcimales. Une valeur TIMESTAMP est
stocke sur 8 octets.
Bien que la plage de dates couverte par TIMESTAMP soit identique celle
du type DATE (couvrant les annes 0001 9999), lintervalle utile des
valeurs TIMESTAMP est compris entre 1600-02-28 23:59:59 et 7911-01-01
00:00:00. En dehors de cet intervalle, la partie horaire de TIMESTAMP peut
tre incomplte.
Normes et compatibilit SQL/92 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

Voir aussi Type de donnes TIME [Date et heure] la page 77

77
Types de donnes binaires
Fonction Stocker des donnes binaires, y compris des images et dautres informations
non interprtes par la base de donnes.

Type de donnes BINARY [Binaire]


Fonction Donnes binaires dune longueur maximale spcifie (en octets).
Syntaxe BINARY [ ( longueur_maximale ) ]

Utilisation La valeur par dfaut de longueur_maximale est 1.


La taille maximale autorise est 32767. Le type de donnes BINARY est
identique au type de donnes CHAR, sauf en cas dutilisation dans des
comparaisons. Les valeurs BINARY font lobjet de comparaisons exactes
alors que les valeurs CHAR font lobjet de comparaisons par le biais de la
squence de classement de la base de donnes.
Paramtres longueur_maximale Expression dentier indiquant la longueur maximale
de lexpression.
Normes et compatibilit SQL/92 Extension propritaire.
Sybase Adaptive Server Enterprise prend en charge
longueur_maximale jusqu 255.
Voir aussi Type de donnes LONG BINARY [Binaire] la page 78
Type de donnes VARBINARY [Binaire] la page 80

Type de donnes LONG BINARY [Binaire]


Fonction Donnes binaires de longueur arbitraire.
Syntaxe LONG BINARY

Utilisation La taille maximale est de 2 Go.


Normes et compatibilit SQL/92 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi Type de donnes BINARY [Binaire] la page 78
Type de donnes VARBINARY [Binaire] la page 80

Type de donnes IMAGE [Binaire]


Fonction Donnes LONG BINARY autorisant les valeurs NULL.
Syntaxe IMAGE

78
Chapitre 2. Types de donnes SQL

Utilisation Dans Adaptive Server Anywhere, le type IMAGE est mis en oeuvre en tant
que domaine, comme LONG BINARY autorisant les valeurs NULL. Ce type
de donnes est compatible avec Adaptive Server Enterprise.
Normes et compatibilit SQL/92 Extension propritaire.

Sybase Compatible avec Adaptive Server Enterprise.

Type de donnes UNIQUEIDENTIFIER [Binaire]


Fonction Stockage des valeurs UUID (galement appeles GUID).
Syntaxe UNIQUEIDENTIFIER

Utilisation Le type de donnes UNIQUEIDENTIFIER est gnralement utilis pour une


cl primaire ou une autre colonne unique afin de contenir les valeurs UUID
(Universally Unique Identifier ou Identificateur unique universel) qui
identifient des lignes de faon unique. La fonction NEWID cre des valeurs
UUID de sorte que la valeur produite sur un ordinateur soit diffrente de la
valeur gnre sur un autre ordinateur. Les valeurs UNIQUEIDENTIFIER
cres laide de NEWID peuvent donc servir de cls dans un
environnement de synchronisation.
Par exemple :
CREATE TABLE T1 (
pk UNIQUEIDENTIFIER PRIMARY KEY DEFAULT NEWID(),
c1 INT )

Les valeurs UUID sont aussi appeles GUID (Globally Unique Identifier ou
Identificateur unique global).
Adaptive Server Anywhere convertit automatiquement les valeurs
UNIQUEIDENTIFIER au format chane ou binaire, selon les besoins.
Les valeurs UNIQUEIDENTIFIER sont stockes en tant que valeurs
BINARY(16) mais sont dcrites en tant que valeurs BINARY(36) dans les
applications clientes. Cette description garantit quun espace suffisant est
affect au rsultat si le client lit la valeur comme une chane. Dans les
applications clientes ODBC, les valeurs UNIQUEIDENTIFIER se
prsentent comme des valeurs de type SQL_GUID.
Normes et compatibilit SQL/92 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Compatibilit descendante Dans les bases de donnes cres avant la
version 9.0.2, UNIQUEIDENTIFIER tait mis en oeuvre en tant que type
de donnes dfini par lutilisateur avec BINARY(16). Les fonctions

79
STRTOUUID et UUIDTOSTR taient requises pour convertir les valeurs
de type chane et BINARY(16). Ces deux fonctions ne sont pas
ncessaires dans des bases des donnes cres avec la version 9.0.2 ou
toute version ultrieure prenant en charge les types de donnes
UNIQUEIDENTIFIER natifs.
Pour savoir si votre base de donnes supporte le type de donnes
UNIQUEIDENTIFER natif, vrifiez que la proprit UniqueIdentifier de
longlet Informations tendues de la feuille de proprits de base de
donnes de Sybase Central est active (ON), ou que la requte suivante
renvoie la valeur ON :
select db_property(UniqueIdentifier)

Voir aussi Valeur NEWID par dfaut [ASA - Guide de lutilisateur SQL, page 94]
NEWID (fonction diverse) la page 190
UUIDTOSTR (fonction de chane de caractres) la page 246
STRTOUUID (fonction de chane de caractres) la page 238

Type de donnes VARBINARY [Binaire]


Fonction Identique celle de BINARY.
Syntaxe VARBINARY [ ( longueur_maximale ) ]

Utilisation Chanes binaires de longueur variable. La valeur par dfaut de


longueur_maximale est 1.
Normes et compatibilit SQL/92 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi Type de donnes BINARY [Binaire] la page 78
Type de donnes LONG BINARY [Binaire] la page 78

80
Chapitre 2. Types de donnes SQL

Domaines
Fonction Les domaines sont des alias pour les types de donnes intgrs. Le cas
chant, ils comprennent des valeurs de prcision et dchelle, voire des
valeurs DEFAULT et des conditions CHECK. Certains domaines, comme les
types de donnes montaires, sont prdfinis dans Adaptive Server
Anywhere, mais vous pouvez en crer dautres.
Les domaines, ou types de donnes dfinis par lutilisateur, permettent de
dfinir automatiquement les colonnes dune base avec le mme type de
donnes, les mmes conditions NULL ou NOT NULL, le mme paramtre
DEFAULT et la mme condition CHECK. Les domaines contribuent la
cohrence des donnes dans la base et liminent certains types derreur.
Domaines simples Les domaines sont crs laide de linstruction CREATE DOMAIN. Pour
plus dinformations sur la syntaxe, reportez-vous la section Instruction
CREATE DOMAIN la page 360.
Linstruction suivante cre le type de donnes adresse_rue, qui reprsente
une chane de 35 caractres :
CREATE DOMAIN street_address CHAR( 35 )

Sil est possible demployer linstruction CREATE DATATYPE au lieu de


CREATE DOMAIN, il est toutefois dconseill de le faire car CREATE
DOMAIN est la syntaxe utilise dans lavant-projet de la norme SQL/3.
La cration de types de donnes requiert le droit RESOURCE. LID de
lutilisateur qui a excut linstruction CREATE DOMAIN devient le
propritaire du type cr. Tous les utilisateurs peuvent utiliser le nouveau
type. Contrairement aux autres objets de base de donnes, le nom du
propritaire ne prcde jamais le nom du type de donnes.
Lors de la dfinition de colonnes, adresse_rue sutilise exactement de la
mme manire que nimporte quel autre type de donnes. Par exemple, la
table suivante comporte deux colonnes dont lune est de type adresse_rue :
CREATE TABLE twocol (
id INT,
street street_address
)

Les domaines sont supprims par leur propritaire ou par le DBA, laide de
linstruction DROP DOMAIN :
DROP DOMAIN street_address

Cette instruction nest admise que dans la mesure o le type nest utilis
dans aucune table de la base de donnes. Si vous tentez de supprimer un

81
domaine en cours dutilisation, le message La cl primaire de la ligne de la
table SYSUSERTYPE est rfrence dans une autre table saffiche.
Contraintes et valeurs De nombreux attributs associs aux colonnes, comme la possibilit
par dfaut avec les daccepter des valeurs NULL, davoir une valeur DEFAULT, etc., peuvent
domaines tre dfinis dans un domaine. Ainsi, toute colonne cre avec ce type hrite
automatiquement des attributs spcifis. Vous pouvez ainsi uniformiser, dans
toute la base de donnes, les colonnes ayant une signification analogue.
Par exemple, plusieurs colonnes cl primaire de la base exemple contiennent
des entiers correspondant des numros dID. Linstruction suivante cre un
type de donnes qui peut savrer utile pour de telles colonnes :
CREATE DOMAIN id INT
NOT NULL
DEFAULT AUTOINCREMENT
CHECK( @col > 0 )

Toute colonne utilisant le nouveau type id interdit les valeurs NULL, est
auto-incrmente par dfaut et ne doit contenir que des nombres positifs.
Nimporte quel identificateur peut tre utilis la place de col dans la
variable @col.
Si ncessaire, vous pouvez dfinir explicitement des attributs de colonne, qui
seront prioritaires sur ceux associs au type de donnes. Une colonne cre
avec le type id et autorisant explicitement des valeurs NULL accepte
effectivement les valeurs NULL, quelle que soit la dfinition du type id.
Compatibilit Valeurs par dfaut et contraintes nommes Dans Adaptive Server
Anywhere, les domaines sont crs avec un type de donnes de base et,
ventuellement, une condition NULL ou NOT NULL, une valeur par
dfaut et une condition CHECK. Les contraintes nommes et les valeurs
par dfaut ne sont pas prises en charge.

Cration de types de donnes Dans Adaptive Server Anywhere, vous


pouvez utiliser la procdure systme sp_addtype pour ajouter un
domaine ou vous servir de linstruction CREATE DOMAIN. En
revanche, dans Adaptive Server Enterprise, vous devez utiliser
sp_addtype.

82
Chapitre 2. Types de donnes SQL

Conversions de types de donnes


Les conversions de type sont soit effectues automatiquement, soit
demandes explicitement laide des fonctions CAST ou CONVERT.
Si vous utilisez une chane dans une expression numrique ou en tant
quargument dune fonction acceptant un argument numrique, elle est
convertie en nombre.
Si vous utilisez un nombre dans une expression de chane ou en tant
quargument dune fonction manipulant des chanes de caractres, il est
converti en chane avant traitement.
Toutes les constantes de date sont spcifies sous forme de chanes. Les
chane sont automatiquement converties en dates avant dtre utilises.
Dans certains cas, cependant, les conversions effectues automatiquement
par la base de donnes sont inappropries :
12/31/90 + 5
a > 0

Ici, la conversion automatique choue. Vous pouvez utiliser la fonction


CAST ou CONVERT pour forcer les types de conversions. Pour plus
dinformations sur les fonctions CAST et CONVERT reportez-vous la
section Fonctions de conversion de types de donnes la page 97.
Les fonctions suivantes servent galement forcer les conversions de type
(reportez-vous la section Fonctions SQL la page 95).
DATE( valeur ) Convertit lexpression en une date et supprime les
heures, les minutes et les secondes. Les erreurs de conversion peuvent
tre signales.

STRING( valeur ) Equivalent de CAST ( valeur AS LONG


VARCHAR ).
Pour plus dinformations sur la fonction STRING, reportez-vous la
section STRING (fonction de chane de caractres) la page 237.
VALUE+0.0 Equivalent de CAST(valeur AS DECIMAL).

Pour plus dinformations sur la fonction CAST, reportez-vous la


section CAST (fonction de conversion de types de donnes) la page 116.

Conversion en cas dutilisation doprateurs de comparaison


Lorsquune comparaison (=, par exemple) est effectue entre des arguments
de diffrents types de donnes, lun des arguments (voire les deux) doit tre

83
converti afin que la comparaison ne porte que sur un seul type de donnes. Il
est parfois prfrable de convertir lun des arguments de manire explicite
laide de CAST ou de CONVERT.
Adaptive Server Anywhere utilise les rgles suivantes pour effectuer une
comparaison (ces rgles sont examines dans lordre indiqu et la premire
qui sapplique est utilise) :
1. Si lun des arguments est de type TIME, convertissez-les en TIME et
comparez-les.

2. Si un argument est de type TINYINT et lautre de type INTEGER,


convertissez-les en INTEGER et comparez-les.

3. Si un argument est de type TINYINT et lautre de type SMALLINT,


convertissez-les en SMALLINT et comparez-les.

4. Si un argument est de type UNSIGNED SMALLINT et lautre de type


INTEGER, convertissez-les en INTEGER et comparez-les.
5. Si les types de donnes des arguments ont le mme supertype,
convertissez les arguments pour leur affecter ce supertype commun et
comparez-les. Les supertypes constituent le type de donnes final de
chacune des listes suivantes :
BIT TINYINT UNSIGNED SMALLINT UNSIGNED
INTEGER UNSIGNED BIGINT NUMERIC
SMALLINT INTEGER BIGINT NUMERIC
REAL DOUBLE
CHAR LONG VARCHAR
BINARY LONG BINARY
DATE TIMESTAMP
Par exemple, si les arguments sont respectivement de type BIT et
TINYINT, ils sont convertis en NUMERIC.
6. Si lun des arguments est de type DATE ou TIMESTAMP,
convertissez-les en TIMESTAMP et comparez-les.
Par exemple, si les deux arguments sont de type REAL et DATE, ils sont
lun et lautre convertis en TIMESTAMP.
7. Si lun des arguments est de type UNIQUEIDENTIFIER,
convertissez-les en UNIQUEIDENTIFIER et comparez-les.
8. Si lun des arguments est de type CHARACTER et lautre de type
BINARY, convertissez-les en BINARY et comparez-les.

84
Chapitre 2. Types de donnes SQL

9. Si lun des arguments est de type NUMERIC et lautre de type FLOAT,


convertissez-les tous les deux en DOUBLE et comparez-les.

10. Convertissez les arguments en NUMERIC et comparez-les.


Par exemple, si les deux arguments sont de type REAL et CHAR, ils sont
tous les deux convertis en NUMERIC.
Remarques Vous pouvez ignorer ces rgles en convertissant de manire explicite les
arguments en un autre type. Par exemple, si vous voulez comparer un
argument de type DATE et un argument de type CHAR comme sils
taient tous les deux de type CHAR, vous devez convertir explicitement
largument de type DATE en type CHAR.
Pour plus dinformations, reportez-vous la section CAST
(fonction de conversion de types de donnes) la page 116.

Les rgles 1, 6 et 10 sont susceptibles dentraner des checs de


conversion.

85
Conversion de types de donnes Java et SQL
La conversion de types de donnes Java et SQL est requise pour les
procdures stockes Java et les applications JDBC. Les conversions entre
types de donnes Java et SQL seffectuent conformment au standard JDBC.
Le tableau ci-dessous en dresse la liste :

Conversion de types de donnes Java en SQL

Type Java Type SQL

String CHAR

String VARCHAR

String TEXT

java.math.BigDecimal NUMERIC

java.math.BigDecimal MONEY

java.math.BigDecimal SMALLMONEY

boolean BIT

byte TINYINT

Short SMALLINT

Int INTEGER

long INTEGER

float REAL

double DOUBLE

byte[ ] VARBINARY

byte[ ] IMAGE

java.SQL.Date DATE

java.SQL.Time TIME

java.SQL.Timestamp TIMESTAMP
java.lang.Double DOUBLE

java.lang.Float REAL

java.lang.Integer INTEGER

java.lang.Long INTEGER

86
Chapitre 2. Types de donnes SQL

Type Java Type SQL

void this1

Conversion de types de donnes SQL en Java

Type SQL Type Java

CHAR String
VARCHAR String

TEXT String

NUMERIC java.math.BigDecimal

DECIMAL java.math.BigDecimal

MONEY java.math.BigDecimal

SMALLMONEY java.math.BigDecimal

BIT boolean

TINYINT byte

SMALLINT short

INTEGER int

BIGINT long

REAL float

FLOAT double
DOUBLE double

BINARY byte[ ]

VARBINARY byte[ ]

LONG VARBINARY byte[ ]

IMAGE byte[ ]
DATE java.SQL.Date

TIME java.SQL.Time

TIMESTAMP java.SQL.Timestamp
1 La mthode renvoie une valeur, cest--dire lobjet lui-mme.

87
88
Chapitre 2. Types de donnes SQL

Conformit An 2000
Le problme de la gestion des dates, en particulier pour lan 2000 et les
annes suivantes, sest rvl crucial pour lindustrie informatique.
Cette section traite de la gestion des dates aprs lan 2000 par Adaptive
Server Anywhere. Elle dcrit le mode de traitement interne des dates par
Adaptive Server Anywhere, ainsi que des informations de date ambigus
(telles que la conversion dune date deux chiffres).
Nous tenons rassurer les utilisateurs dAdaptive Server Anywhere et des
versions antrieures : le passage au 21e sicle seffectuera sans problme.
En effet, en ce qui concerne la conformit des dates avec lan 2000,
Adaptive Server Anywhere adopte les comportements suivants :
Adaptive Server Anywhere renvoie toujours des valeurs exactes pour
toutes les oprations arithmtiques ou logiques autorises sur les dates,
mme si les valeurs calcules stendent sur plusieurs sicles.

En interne, les dates dAdaptive Server Anywhere sont toujours stockes


avec la partie de lanne correspondant au sicle.

Aucune valeur de retour, y compris la date courante, ne modifie le


fonctionnement dAdaptive Server Anywhere.
Les dates peuvent toujours tre mises dans un format incluant le sicle.
La plupart des rubriques portant sur les dates, rsumes dans cette section,
sont reprises plus en dtail dans dautres parties de cette documentation.

Mode de stockage des dates


Les dates contenant des annes sont utilises en interne et stockes dans les
bases de donnes Adaptive Server Anywhere dans lun des types de donnes
suivants :

89
Type de donnes Contenu Taille des va- Intervalle de
riables valeurs

DATE Date calendaire octets 0001-01-01


(anne, mois, 9999-12-31
jour)

TIMESTAMP Estampille (an- octets 0001-01-01


ne, mois, jour, 9999-12-31 (la
heures, minutes, prcision de la
secondes et frac- partie horaire de
tions de seconde ; TIMESTAMP
les fractions sont est supprime
exactes jusqu la avant 1600-02-
6e dcimale) 28 23:59:59 et
aprs 7911-01-
01 00:00:00)
Pour plus dinformations sur les types de donnes date et heure
dAdaptive Server Anywhere, reportez-vous la section Types de donnes
date et heure la page 71.

Envoi et rcupration de valeurs de date


Les valeurs de date sont stockes dans Adaptive Server Anywhere comme
type de donnes DATE ou TIMESTAMP, mais elles sont transmises
Adaptive Server Anywhere ou rcupres dAdaptive Server Anywhere
selon lune des mthodes suivantes :
en tant que chane, laide dune interface de programmation dAdaptive
Server Anywhere ;

en tant que structure TIMESTAMP, laide dODBC ;


en tant que structure SQLDATETIME, laide dEmbedded SQL.
Une chane contenant une valeur de date est considre comme non ambigu
et automatiquement convertie en donnes de type DATE ou TIMESTAMP
sans risque dinterprtation errone, si elle est transmise dans le format
suivant : aaaa-mm-jj (plusieurs caractres de sparation autres que le tiret (-)
sont autoriss).
Pour plus dinformations Loption de base de donnes DATE_FORMAT vous permet dutiliser des
formats de date diffrents de aaaa-mm-jj. Pour plus dinformations,
reportez-vous la section Option DATE_FORMAT [compatibilit] [ASA -
Guide dadministration, page 704].

90
Chapitre 2. Types de donnes SQL

Pour plus dinformations sur les formats de date non ambigus, reportez-vous
la section Utilisation de dates et dheures non ambigus la page 73.
Pour plus dinformations sur la structure TIMESTAMP dODBC, consultez
la documentation du kit Open Database Connectivity SDK de Microsoft, ou
reportez-vous la section Envoi de dates et dheures la base de donnes
la page 71.
Utilise dans le dveloppement de programmes en langage C, une valeur
danne associe la structure SQLDATETIME dEmbedded SQL est un
entier sign sur 16 bits.
Pour plus dinformations sur le type de donnes SQLDATETIME,
reportez-vous la section Types de donnes Embedded SQL [ASA - Guide
de programmation, page 162].

Annes bissextiles
Lan 2000 est une anne bissextile, cest--dire que son mois de fvrier
compte un jour supplmentaire. Pour identifier les annes bissextiles,
Adaptive Server Anywhere utilise un algorithme classique qui considre
comme bissextile toute anne divisible par quatre. Dans le cas particulier
dune date marquant un sicle (par exemple, 1900), lanne est bissextile si
elle est divisible par 400.
Adaptive Server Anywhere gre correctement toutes les annes bissextiles.
Par exemple, linstruction SQL suivante renvoie une valeur gale Mardi :
SELECT DAYNAME(2000-02-29)

Adaptive Server Anywhere accepte le 29 fvrier 2000 (une anne bissextile)


comme une date et sen sert pour dterminer le jour de la semaine
correspondant.
En revanche, Adaptive Server Anywhere rejette linstruction suivante :
SELECT DAYNAME(2001-02-29)

Cette instruction provoque une erreur (Impossible de convertir 2001-02-29


en date), puisquil nexiste pas de 29 fvrier en 2001.

Conversion de chanes ambigus en dates


Adaptive Server Anywhere convertit automatiquement une chane en date
lorsquune valeur de date est attendue, et ce mme si lanne indique dans
la chane ne comporte que deux chiffres.
Si la partie sicle dune anne est omise, la mthode de conversion est

91
dtermine par loption de base de donnes NEAREST_CENTURY.
Loption NEAREST_CENTURY est une valeur numrique qui joue le rle
de bascule entre les valeurs de date faisant rfrence aux annes 1900
et 2000.
Les annes indiques par deux chiffres et infrieures la valeur
NEAREST_CENTURY sont converties en 20aa, tandis que les annes
suprieures ou gales cette valeur sont converties en 19aa.
Si cette option nest pas dfinie, la valeur par dfaut 50 est utilise. Les
annes en deux chiffres sont alors supposes tre comprises entre 1950
et 2049.
Loption NEAREST_CENTURY est disponible depuis la version 5.5
dAdaptive Server Anywhere. Dans cette version, le paramtre par dfaut
est 0.
Exemples de conversion Linstruction suivante cre une table qui permet dillustrer la conversion
de dates ambigus dinformations de date ambigus dans Adaptive Server Anywhere :
CREATE TABLE T1 (C1 DATE);

La table T1 contient une colonne C1 de type DATE.


Linstruction suivante insre une valeur de date dans la colonne C1.
Adaptive Server Anywhere convertit automatiquement la chane contenant
une valeur danne ambigu : deux chiffres pour lanne mais rien pour
indiquer le sicle.
INSERT INTO T1 VALUES(00-01-01);

Loption NEAREST_CENTURY tant fixe 50 par dfaut, Adaptive


Server Anywhere convertit la chane ci-dessus et obtient la date 2000-01-01.
Linstruction suivante permet de vrifier le rsultat de cette insertion :
SELECT * FROM T1;

Pour modifier le processus de conversion, changez la valeur de


NEAREST_CENTURY comme suit :
SET OPTION NEAREST_CENTURY = 0;

Si vous excutez de nouveau la mme instruction dinsertion avec


NEAREST_CENTURY fixe 0, la date obtenue est diffrente :
INSERT INTO T1 VALUES(00-01-01);

Cette instruction insre dsormais la date 1900-01-01. Vrifiez le rsultat


comme suit :

92
Chapitre 2. Types de donnes SQL

SELECT * FROM T1;

Conversion des dates en chanes


Adaptive Server Anywhere offre plusieurs fonctions permettant de convertir
des valeurs de type date et heure en toutes sortes de chanes et dexpressions.
Il est possible, lors de la conversion dune valeur de date en une chane, de
rduire deux chiffres le nombre reprsentant lanne, laissant par
consquent tomber la partie associe au sicle.
Valeurs de sicle Considrons linstruction suivante, qui convertit de faon incorrecte la
errones chane reprsentant la date Janvier 1, 2000 en une chane contenant
Janvier 1, 1900, mme si aucune erreur de base de donnes ne sest
produite.
SELECT DATEFORMAT (
DATEFORMAT(2000-01-01, Mmm dd/yy ),
yyyy-Mmm-dd )
AS Wrong_year;

Adaptive Server Anywhere convertit automatiquement et correctement la


chane de date non ambigu 2000-01-01 en valeur de date. Toutefois, le
format Mmm dd/yy de la fonction DATEFORMAT interne (ou imbrique)
supprime la partie de la date correspondant au sicle lorsque celle-ci est
reconvertie en chane et transmise la fonction DATEFORMAT externe.
Dans lexemple ci-dessus, la valeur de loption de base de donnes
NEAREST_CENTURY est 0. Par consquent, la fonction DATEFORMAT
externe convertit la chane de date comportant une valeur danne sur deux
chiffres en une anne comprise entre 1900 et 1999.
Pour plus dinformations sur les fonctions de date et dheure,
reportez-vous la section Fonctions de date et dheure la page 98.

93
CHAPITRE 3

Fonctions SQL

Prsentation Ces fonctions renvoient des informations dune base de donnes. Elles
peuvent tre utilises partout o une expression est autorise.

Paramtres NULL
Sauf indication contraire, toute fonction qui reoit un paramtre NULL
renvoie une valeur NULL.
Ce chapitre regroupe les fonctions par type puis fournit une liste
alphabtique des fonctions.
Sommaire Sujet : page

Types de fonction 96

Liste alphabtique des fonctions 110

95
Types de fonction
Cette section regroupe les fonctions par type.

Fonctions dagrgat
Les fonctions dagrgat regroupent des donnes appartenant un groupe de
lignes issues de la base de donnes. Ces groupes sont forms laide de la
clause GROUP BY de linstruction SELECT. Les fonctions dagrgat ne
sont autorises que dans la liste de slection, ainsi que dans les clauses
HAVING et ORDER BY dune instruction SELECT.
Liste des fonctions Voici les fonctions dagrgat disponibles :
AVG (fonction dagrgat) la page 113
COS (fonction numrique) la page 128
COVAR_POP (fonction dagrgat) la page 130
COVAR_SAMP (fonction dagrgat) la page 131
COUNT (fonction dagrgat) la page 129
GROUPING (fonction dagrgat) la page 165
LIST (fonction dagrgat) la page 179
MAX (fonction dagrgat) la page 185
MIN (fonction dagrgat) la page 186
REGR_AVGX (fonction dagrgat) la page 210
REGR_AVGY (fonction dagrgat) la page 211
REGR_COUNT (fonction dagrgat) la page 212
REGR_INTERCEPT (fonction dagrgat) la page 213
REGR_R2 (fonction dagrgat) la page 214
REGR_SLOPE (fonction dagrgat) la page 215
REGR_SXX (fonction dagrgat) la page 216
REGR_SXY (fonction dagrgat) la page 217
REGR_SYY (fonction dagrgat) la page 217
STDDEV (fonction dagrgat) la page 234

96
Chapitre 3. Fonctions SQL

STDDEV_POP (fonction dagrgat) la page 235


STDDEV_SAMP (fonction dagrgat) la page 235
SUM (fonction dagrgat) la page 241
VAR_POP (fonction dagrgat) la page 248
VAR_SAMP (fonction dagrgat) la page 249
VARIANCE (fonction dagrgat) la page 250

Fonctions de classement
Les fonctions de classement permettent de calculer une valeur de classement
pour chaque ligne dun jeu de rsultats en fonction dun ordre spcifi dans
la requte.
CUME_DIST (fonction dagrgat) la page 133
DENSE_RANK (fonction dagrgat) la page 147
PERCENT_RANK (fonction dagrgat) la page 203
RANK (fonction dagrgat) la page 209
ROW_NUMBER (fonction dagrgat) la page 224

Fonctions de conversion de types de donnes


Ces fonctions servent convertir des arguments dun type de donnes dans
un autre type ou vrifier sils peuvent tre convertis.
Compatibilit Actuellement, la fonction castAdaptive Server Anywhere nest pas prise
en charge par Adaptive Server Enterprise.
Liste des fonctions Les fonctions de conversion de types de donnes suivantes sont disponibles :
CAST (fonction de conversion de types de donnes) la page 116
CONVERT (fonction de conversion de types de donnes) la page 125
HEXTOINT (fonction de conversion de types de donnes) la
page 167
INTTOHEX (fonction de conversion de types de donnes) la
page 175
CONVERT (fonction de conversion de types de donnes) la page 175
ISNUMERIC (fonction diverse) la page 177

97
Fonctions de date et dheure
Les fonctions de date et dheure effectuent des oprations sur les types de
donnes date et heure et renvoient des informations relatives la date et
lheure.
Dans ce chapitre, le terme datetime (dateheure) sert dsigner la date,
lheure ou lestampille (timestamp). Le type de donnes correspondant est
DATETIME.
Pour plus dinformations sur les types de donnes datetime,
reportez-vous la section Types de donnes date et heure la page 71.
Liste des fonctions Les fonctions de date et dheure suivantes sont disponibles :
DATE (fonction de date et dheure) la page 135
DATEADD (fonction de date et dheure) la page 135

DATEDIFF (fonction de date et dheure) la page 136


DATEFORMAT (fonction de date et dheure) la page 137
DATENAME (fonction de date et dheure) la page 138

DATEPART (fonction de date et dheure) la page 139


DATETIME (fonction de date et dheure) la page 139
DAY (fonction de date et dheure) la page 139

DAYNAME (fonction de date et dheure) la page 140


DAYS (fonction de date et dheure) la page 140
DOW (fonction de date et dheure) la page 148

GETDATE (fonction de date et dheure) la page 162


HOUR (fonction de date et dheure) la page 167
HOURS (fonction de date et dheure) la page 168

MINUTE (fonction de date et dheure) la page 186


MINUTES (fonction de date et dheure) la page 187
MONTH [fonction de date et dheure] la page 188

MONTHNAME (fonction de date et dheure) la page 189

98
Chapitre 3. Fonctions SQL

MONTHS (fonction de date et dheure) la page 189


NOW (fonction de date et dheure) la page 194

QUARTER (fonction de date et dheure) la page 208

SECOND (fonction de date et dheure) la page 225


SECONDS (fonction de date et dheure) la page 226

TODAY (fonction de date et dheure) la page 242

WEEKS (fonction de date et dheure) la page 251


YEAR (fonction de date et dheure) la page 258

YEARS (fonction de date et dheure) la page 258


YMD (fonction de date et dheure) la page 259

Parties de date
La plupart des fonctions de date utilisent des donnes compiles partir de
parties de date. Le tableau suivant affiche les valeurs de parties de date
autorises.

Partie de date Abrviation Valeurs

Anne aa 19999

Trimestre qq 14

Month mm 112

Week wk 154. Les semaines commencent le di-


manche.

Day dd 131
Dayofyear dy 1366

Weekday dw 17 (Dimanche = 1, . . ., Samedi = 7)

Hour hh 023

Minute mi 059
Second ss 059

Millisecond ms 0999

99
Partie de date Abrviation Valeurs

Calyearofweek cyr Entier. Anne au cours de laquelle la se-


maine commence. Selon le jour de la
semaine o lanne a commenc, il est
possible que la semaine contenant les pre-
miers jours de lanne ait dbut lanne
prcdente. Les annes qui commencent
entre un lundi et un jeudi nont aucun
jour dans lanne prcdente, tandis que
la premire semaine dune anne qui d-
bute entre un vendredi et un dimanche
commence le premier lundi de lanne.

Calweekofyear cwk 154. Numro de la semaine comprenant


la date indique.

Caldayofweek cdw 17. (Dimanche = 1, . . ., Samedi = 7)

Fonctions Java et SQL dfinies par lutilisateur


Il existe deux mcanismes de cration de fonctions dfinies par lutilisateur
dans Adaptive Server Anywhere : vous pouvez crire la fonction en langage
SQL ou utiliser Java.
Fonctions dfinies par Pour crer vos propres fonctions SQL, utilisez linstruction dcrite la
lutilisateur en SQL section Instruction CREATE FUNCTION la page 376. Lorsquelle est
dclare dans une instruction CREATE FUNCTION, linstruction RETURN
dtermine le type de donnes de la fonction.
Une fois cre, une fonction SQL dfinie par lutilisateur peut tre utilise
avec nimporte quelle fonction intgre du mme type de donnes.
Pour plus dinformations sur la cration de fonctions SQL,
reportez-vous la section Utilisation des procdures, des triggers et des
batchs [ASA - Guide de lutilisateur SQL, page 701].
Fonctions dfinies par Les classes Java permettent de crer plus simplement des fonctions
lutilisateur en Java utilisateur qui, le cas chant, peuvent tre copies dun serveur de base de
donnes vers une application cliente.
Toute mthode dune classe Java installe peut sutiliser avec nimporte
quelle fonction intgre du mme type de donnes.
Les mthodes dinstance sont lies aux instances spcifiques dune classe et,
par consquent, se comportent diffremment des fonctions dfinies par
lutilisateur.

100
Chapitre 3. Fonctions SQL

Pour plus dinformations sur la cration de classes Java et sur les


mthodes de classe, reportez-vous la section Sminaire Java [ASA - Guide
de programmation, page 63].

Fonctions diverses
Ces fonctions effectuent des oprations sur des expressions arithmtiques, de
type chane ou de type date/heure, incluant des valeurs renvoyes par
dautres fonctions.
Liste des fonctions Les fonctions diverses suivantes sont disponibles :
ARGN (fonction diverse) la page 111
COALESCE (fonction diverse) la page 119

COMPRESS (fonction de chane de caractres) la page 121


CONFLICT (fonction diverse) la page 123
DECOMPRESS (fonction de chane de caractres) la page 144
DECRYPT (fonction de chane de caractres) la page 145
ENCRYPT (fonction de chane de caractres) la page 149
ERRORMSG (fonction diverse) la page 150

ESTIMATE (fonction diverse) la page 151


ESTIMATE_SOURCE (fonction diverse) la page 152
EXPERIENCE_ESTIMATE (fonction diverse) la page 158

EXPLANATION (fonction diverse) la page 159


EXPRTYPE (fonction diverse) la page 160

GET_IDENTITY (fonction diverse) la page 161


GRAPHICAL_PLAN (fonction diverse) la page 163
GRAPHICAL_ULPLAN (fonction diverse) la page 164

GREATER (fonction diverse) la page 165


HASH (fonction de chane de caractres) la page 166

IDENTITY (fonction diverse) la page 173


IFNULL (fonction diverse) la page 173

101
INDEX_ESTIMATE (fonction diverse) la page 174
ISNULL (fonction de conversion de types de donnes) la page 176
LESSER (fonction diverse) la page 179
LONG_ULPLAN (fonction diverse) la page 184
NEWID (fonction diverse) la page 190
NULLIF (fonction diverse) la page 195
NUMBER (fonction diverse) la page 196
PLAN (fonction diverse) la page 204
REWRITE (fonction diverse) la page 221
SHORT_ULPLAN (fonction diverse) la page 227
SQLDIALECT (fonction diverse) la page 234
TRACEBACK (fonction diverse) la page 243
TRANSACTSQL (fonction diverse) la page 243
VAREXISTS (fonction diverse) la page 250
WATCOMSQL (fonction diverse) la page 250

Fonctions numriques
Ces fonctions effectuent des oprations mathmatiques sur des donnes de
type numrique et renvoient des informations numriques.
Liste des fonctions Les fonctions numriques suivantes sont disponibles :
ABS (fonction numrique) la page 110
ACOS (fonction numrique) la page 110
ASIN (fonction numrique) la page 112
ATAN (fonction numrique) la page 112
ATN2 (fonction numrique) la page 113
CEILING (fonction numrique) la page 117
COS (fonction numrique) la page 128
COT (fonction numrique) la page 129

102
Chapitre 3. Fonctions SQL

DEGREES (fonction numrique) la page 146


EXP (fonction numrique) la page 158

FLOOR (fonction numrique) la page 160

LOG (fonction numrique) la page 183


LOG10 (fonction numrique) la page 183

MOD (fonction numrique) la page 188

PI (fonction numrique) la page 204


POWER (fonction numrique) la page 205

RADIANS (fonction numrique) la page 208


RAND (fonction numrique) la page 209
REMAINDER (fonction numrique) la page 218
ROUND (fonction numrique) la page 223
SIGN (fonction numrique) la page 228
SIN (fonction numrique) la page 229
SQRT (fonction numrique) la page 234

TAN (fonction numrique) la page 241


TRUNCATE (fonction numrique) la page 244
TRUNCNUM (fonction numrique) la page 245

Fonctions HTTP
Les fonctions HTTP permettent le traitement de demandes HTTP dans le
cadre de services Web.
Liste des fonctions Les fonctions suivantes sont disponibles :
HTML_DECODE (fonction) la page 169

HTML_DECODE (fonction) la page 169


HTTP_DECODE (fonction HTTP) la page 170
HTTP_ENCODE (fonction HTTP) la page 171
HTTP_VARIABLE (fonction HTTP) la page 172

103
NEXT_HTTP_HEADER (fonction HTTP) la page 193
NEXT_HTTP_VARIABLE (fonction HTTP) la page 194

Fonctions de chane
Les fonctions de chane de caractres effectuent des oprations de
conversion, dextraction et de manipulation de chanes ou renvoient des
informations relatives des chanes.
Si vous faites appel un jeu de caractres cods sur plusieurs octets, vrifiez
que la fonction utilise renvoie des informations relatives des caractres ou
des octets.
Liste des fonctions Les fonctions de chane de caractres suivantes sont disponibles :
ASCII (fonction de chane de caractres) la page 111
BASE64_DECODE (fonction de chane de caractres) la page 114
BASE64_ENCODE (fonction de chane de caractres) la page 114

BYTE_LENGTH (fonction de chane de caractres) la page 115


BYTE_SUBSTR (fonction de chane de caractres) la page 115

CHAR [fonction de chane de caractres] la page 117


CHARINDEX (fonction de chane de caractres) la page 118
CHAR_LENGTH (fonction de chane de caractres) la page 119

COMPARE (fonction de chane de caractres) la page 119


COMPRESS (fonction de chane de caractres) la page 121
CSCONVERT (fonction de chane de caractres) la page 131

DECOMPRESS (fonction de chane de caractres) la page 144


DECRYPT (fonction de chane de caractres) la page 145
DIFFERENCE (fonction de chane de caractres) la page 148
ENCRYPT (fonction de chane de caractres) la page 149
HASH (fonction de chane de caractres) la page 166

INSERTSTR (fonction de chane de caractres) la page 174


LCASE (fonction de chane de caractres) la page 177

104
Chapitre 3. Fonctions SQL

LEFT (fonction de chane de caractres) la page 178


LENGTH (fonction de chane de caractres) la page 178
LOCATE (fonction de chane de caractres) la page 182
LOWER (fonction de chane de caractres) la page 184
LTRIM (fonction de chane de caractres) la page 185
OPENXML (fonction de chane de caractres) la page 197
PATINDEX (fonction de chane de caractres) la page 202
REPEAT (fonction de chane de caractres) la page 219
REPLACE (fonction de chane de caractres) la page 219
REPLICATE (fonction de chane de caractres) la page 220
RIGHT (fonction de chane de caractres) la page 223
RTRIM (fonction de chane de caractres) la page 225
SIMILAR (fonction de chane de caractres) la page 228
SORTKEY (fonction de chane de caractres) la page 229
SOUNDEX (fonction de chane de caractres) la page 232
SPACE (fonction de chane de caractres) la page 233
STR (fonction de chane de caractres) la page 236
STRING (fonction de chane de caractres) la page 237
STRTOUUID (fonction de chane de caractres) la page 238
STUFF (fonction de chane de caractres) la page 239
SUBSTRING (fonction de chane de caractres) la page 239
TRIM (fonction de chane de caractres) la page 243
UCASE (fonction de chane de caractres) la page 245
UPPER (fonction de chane de caractres) la page 246
UUIDTOSTR (fonction de chane de caractres) la page 246
XMLAGG (fonction de chane de caractres) la page 252
XMLCONCAT (fonction de chane de caractres) la page 253

105
XMLELEMENT (fonction de chane de caractres) la page 254
XMLFOREST (fonction de chane de caractres) la page 255

XMLGEN (fonction de chane de caractres) la page 256

Fonctions systme
Les fonctions systme renvoient des informations systme.
Liste des fonctions Les fonctions systme suivantes sont disponibles :
CONNECTION_PROPERTY (fonction systme) la page 122
DATALENGTH (fonction systme) la page 134

DB_ID (fonction systme) la page 141


DB_NAME (fonction systme) la page 142
DB_EXTENDED_PROPERTY (fonction systme) la page 142

DB_PROPERTY (fonction systme) la page 143


EVENT_CONDITION (fonction systme) la page 153
EVENT_CONDITION_NAME (fonction systme) la page 155
EVENT_PARAMETER (fonction systme) la page 155

NEXT_CONNECTION (fonction systme) la page 191


NEXT_DATABASE (fonction systme) la page 193
PROPERTY (fonction systme) la page 206
PROPERTY_DESCRIPTION (fonction systme) la page 206
PROPERTY_NAME (fonction systme) la page 207
PROPERTY_NUMBER (fonction systme) la page 207

Compatibilit Le tableau suivant rpertorie les fonctions systme Adaptive Server


Enterprise et leur statut dans Adaptive Server Anywhere.

Fonction Statut
Col_length Mise en oeuvre

Col_name Mise en oeuvre

106
Chapitre 3. Fonctions SQL

Fonction Statut
Curunreservedpgs Non mise en oeuvre

Data_pgs
Non mise en oeuvre

Datalength Mise en oeuvre

Db_id Mise en oeuvre

Db_name Mise en oeuvre

Host_id Non mise en oeuvre

Host_name
Non mise en oeuvre

Index_col Mise en oeuvre

Lct_admin Non mise en oeuvre

Object_id Mise en oeuvre

Object_name Mise en oeuvre

Proc_role Renvoie toujours 0

Reserved_pgs Non mise en oeuvre

Rowcnt
Non mise en oeuvre

Show_role Renvoie toujours NULL

Suser_id Mise en oeuvre

Suser_name
Mise en oeuvre

107
Fonction Statut
Tsequal Mise en oeuvre

Used_pgs Non mise en oeuvre

User_id Mise en oeuvre

User_name
Mise en oeuvre

Valid_name Non mise en oeuvre

Valid_user Non mise en oeuvre

Remarques Dans Adaptive Server Anywhere, certaines fonctions systme sont prises
en charge sous forme de procdures stockes.
Les fonctions db_id, db_name et datalength sont mises en oeuvre sous
forme de fonctions intgres.
Les fonctions systme prises en charge sont dcrites dans le tableau suivant.

Fonction systme Description


Col_length( table-name, column-name
Renvoie la longueur de la colonne
)

Col_name( table-id, column-id [, Renvoie le nom de la colonne


database-id] )

Datalength( expression ) Renvoie la taille de lexpression en


octets.
Db_id( [ database-name ] ) Renvoie le numro didentification
de la base
Db_name( [ database-id ] ) Renvoie le nom de la base

Index_col (table-name, index-id, Renvoie le nom de la colonne


key_# [, userid] )
indexe

108
Chapitre 3. Fonctions SQL

Fonction systme Description


Object_id (object-name ) Renvoie lID de lobjet

Object_name ( object-id [, Renvoie le nom de lobjet


database-id ] )

Suser_id( [user-name] ) Renvoie le numro didentification


(entier) de lutilisateur
Suser_name( [user-id] ) Renvoie lID utilisateur (le nom
de lutilisateur du serveur dans
Adaptive Server Enterprise)
Tsequal (timestamp, timestamp2 ) Compare des valeurs timestamp
pour empcher la mise jour dune
ligne qui a t modifie depuis
linstruction SELECT
User_id( [ user-name] ) Renvoie le numro didentification
(entier) de lutilisateur. A ne pas
confondre avec lID utilisateur
dAdaptive Server Anywhere
User_name( [user-id] ) Renvoie lID utilisateur (le nom de
lutilisateur dans Adaptive Server
Enterprise)

Fonctions texte et image


Les fonctions texte et image sappliquent aux types de donnes texte et
image. Adaptive Server Anywhere ne prend en charge que la fonction texte
et image textptr.
Compatibilit Adaptive Server Anywhere ne prend pas en charge la fonction Adaptive
Server Enterprise textvalid.

Liste des fonctions Les fonctions texte et image suivantes sont disponibles :
TEXTPTR (fonction texte et image) la page 242

109
Liste alphabtique des fonctions
Cette section fournit une liste alphabtique des fonctions, avec leur type
(numrique, caractre, etc.).
Pour obtenir la liste de toutes les fonctions dun type donn,
reportez-vous la section Types de fonction la page 96.

ABS (fonction numrique)


Fonction Renvoie la valeur absolue dune expression numrique.
Syntaxe ABS ( expression_numrique )

Paramtres expression_numrique Nombre dont la valeur absolue doit tre renvoye.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Fonction principale/SQL extrieure au langage SQL basique.
Sybase Compatible avec Adaptive Server Enterprise.
Exemple Linstruction suivante renvoie le rsultat 66 :
SELECT ABS( -66 )

ACOS (fonction numrique)


Fonction Renvoie larc cosinus dune expression numrique, exprim en radians.
Syntaxe ACOS ( expression_numrique )

Paramtres expression_numrique Cosinus de langle.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi ASIN (fonction numrique) la page 112
ATAN (fonction numrique) la page 112
ATN2 (fonction numrique) la page 113
COS (fonction numrique) la page 128
Exemple Linstruction suivante renvoie le rsultat 1998-06-12 :
SELECT YMD( 1998, 06, 12 )

Si les valeurs ne font pas partie de lintervalle standard, la date est ajuste en
consquence. Par exemple, linstruction suivante renvoie le rsultat
2000-03-01 :

110
Chapitre 3. Fonctions SQL

SELECT YMD( 1999, 15, 1 )

Exemple Linstruction suivante renvoie le rsultat 1.023945 :


SELECT ACOS( 0.52 )

ARGN (fonction diverse)


Fonction Renvoie un argument slectionn dans une liste darguments.
Syntaxe ARGN ( expression_entier , expression [ , . . .] )

Paramtres expression_entier Position dun argument dans la liste des expressions.


expression Expression de nimporte quel type de donnes passe dans la
fonction. Les types de donnes de toutes les expressions fournies doivent
tre identiques.
Utilisation A partir de la valeur dexpression_entier utilise comme nombre n, le nime
argument est renvoy (en commenant 1) de la liste darguments restante.
Le type de donnes des expressions peut tre quelconque, mais il doit tre le
mme pour toutes les expressions. La valeur dexpression_entier doit tre
choisie dans la liste des expressions, sinon la valeur NULL est renvoye. Les
expressions multiples sont spares par une virgule.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

Exemple Linstruction suivante renvoie le rsultat 6 :


SELECT ARGN( 6, 1,2,3,4,5,6 )

ASCII (fonction de chane de caractres)


Fonction Renvoie la valeur ASCII entire du premier octet dexpression_chane.
Syntaxe ASCII ( expression_chane )

Paramtres expression_chane Chane.


Utilisation Si la chane est vide, la fonction renvoie zro (0). Les chanes de littraux
doivent tre mises entre apostrophes. Si le jeu de caractres de la base de
donnes est cod sur plusieurs octets et si le premier caractre de la chane
de paramtres comporte plus dun octet, le rsultat est NULL.
Normes et compatibilit SQL/92 Extension propritaire.

111
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.

Exemple Linstruction suivante renvoie le rsultat 90 :


SELECT ASCII( Z )

ASIN (fonction numrique)


Fonction Renvoie larc sinus dune expression numrique, exprim en radians.
Syntaxe ASIN ( expression_numrique )

Paramtres expression_numrique Sinus de langle.


Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi ACOS (fonction numrique) la page 110
ATAN (fonction numrique) la page 112
ATN2 (fonction numrique) la page 113
SIN (fonction numrique) la page 229
Exemple Linstruction suivante renvoie le rsultat 0.546850 :
SELECT ASIN( 0.52 )

ATAN (fonction numrique)


Fonction Renvoie larc tangente dune expression numrique, exprim en radians.
Syntaxe ATAN ( expression_numrique )

Paramtres expression_numrique Tangente de langle.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi ACOS (fonction numrique) la page 110
ASIN (fonction numrique) la page 112
ATN2 (fonction numrique) la page 113
TAN (fonction numrique) la page 241

112
Chapitre 3. Fonctions SQL

Exemple Linstruction suivante renvoie le rsultat 0.479519.


SELECT ATAN( 0.52 )

ATN2 (fonction numrique)


Fonction Renvoie larc tangente du rapport de deux expressions numriques, exprim
en radians.
Syntaxe { ATN2 | ATAN2 } ( expression_numrique1, expression_numrique2 )

Paramtres expression_numrique1 Numrateur du rapport entre les deux


expressions numriques dont larc tangente est calcul.
expression_numrique2 Dnominateur du rapport entre les deux
expressions numriques dont larc tangente est calcul.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase ATN2 est compatible avec Adaptive Server Enterprise. En
revanche, cette fonction nest pas prise en charge par Adaptive Server
Enterprise.
Voir aussi ACOS (fonction numrique) la page 110
ASIN (fonction numrique) la page 112
ATAN (fonction numrique) la page 112
TAN (fonction numrique) la page 241
Exemple Linstruction suivante renvoie le rsultat 0.008666 :
SELECT ATAN2( 0.52, 060 )

AVG (fonction dagrgat)


Fonction Pour un groupe de lignes, calcule la moyenne dune expression numrique
ou dun ensemble de valeurs uniques.
Syntaxe AVG ( expression_numrique | DISTINCT nom_colonne )

Paramtres expression_numrique Expression dont la moyenne est calcule sur un


groupe de lignes.
nom_colonne DISTINCT Calcule la moyenne des valeurs uniques
contenues dans nom_colonne. Cette fonction, dune utilit limite, nest
incluse que par souci dexhaustivit.

113
Utilisation Cette moyenne ninclut pas les lignes pour lesquelles la valeur
dexpression_numrique est NULL. Renvoie la valeur NULL pour un
groupe ne contenant aucune ligne.
Normes et compatibilit SQL/92 Compatible SQL/92.

SQL/99 Fonction principale.


Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi SUM (fonction dagrgat) la page 241
COUNT (fonction dagrgat) la page 129
Exemple Linstruction suivante renvoie le rsultat 49988.6.
SELECT AVG( salary ) FROM employee

BASE64_DECODE (fonction de chane de caractres)


Fonction Dcode des donnes laide du format MIME base64 et renvoie la chane de
caractres sous forme de valeur LONG VARCHAR.
Syntaxe BASE64_DECODE ( expression_chane )

Paramtres expression_chane La chane dcoder. Cette chane doit tre code au


format base64.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi BASE64_ENCODE (fonction de chane de caractres) la page 114
Exemple Linstruction suivante insre une image dans une table dimages partir dun
programme Embedded SQL. Les donnes dentre (variable hte) doivent
tre codes au format base64.
EXEC SQL INSERT INTO images ( image_data ) VALUES ( BASE64_
DECODE ( :img ) )

BASE64_ENCODE (fonction de chane de caractres)


Fonction Code des donnes avec le format MIME base64 et les renvoie sous forme de
chane ASCII 7 bits.
Syntaxe BASE64_ENCODE ( expression_chane )

Paramtres expression_chane La chane coder.

114
Chapitre 3. Fonctions SQL

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi BASE64_DECODE (fonction de chane de caractres) la page 114
Exemple Linstruction suivante extrait des donnes dune table contenant des images
et les renvoie au format ASCII. La chane ainsi obtenue peut tre incorpore
dans un message lectronique, puis dcode par le destinataire de manire
rcuprer limage dorigine.
SELECT BASE64_ENCODE ( image_data ) FROM IMAGES

BYTE_LENGTH (fonction de chane de caractres)


Fonction Renvoie le nombre doctets dune chane.
Syntaxe BYTE_LENGTH ( expression_chane )

Paramtres expression_chane Chane dont la longueur doit tre calcule.


Utilisation Les espaces en fin de chane sont inclus dans la valeur renvoye.
La valeur renvoye pour une chane NULL est NULL.
Si la chane est exprime dans un jeu de caractres cods sur plusieurs
octets, la valeur BYTE_LENGTH diffre du nombre de caractres renvoy
par CHAR_LENGTH.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

Voir aussi CHAR_LENGTH (fonction de chane de caractres) la page 119


DATALENGTH (fonction systme) la page 134
LENGTH (fonction de chane de caractres) la page 178
Exemple Linstruction suivante renvoie le rsultat 12 :
SELECT BYTE_LENGTH( Test Message )

BYTE_SUBSTR (fonction de chane de caractres)


Fonction Renvoie la sous-chane dune chane. Cette sous-chane est calcule en
octets et non en caractres.
Syntaxe BYTE_SUBSTR ( expression_chane, dbut [, longueur ] )

115
Paramtres expression_chane Chane do est extraite la sous-chane.
dbut Entier indiquant la position de dbut de la sous-chane. Un entier
positif indique quune sous-chane commence partir du dbut de la chane
(position 1). Un entier ngatif indique quelle commence la fin de la chane
(position -1).
longueur Entier indiquant la longueur de la sous-chane. Une valeur
positive de longueur indique le nombre doctets prendre droite en partant
de la position de dpart. Une valeur ngative de longueur renvoie longueur
octets maximum jusqu la position de dpart (comprise), en partant
gauche de cette position.
Utilisation Si vous spcifiez la longueur, la sous-chane est limite ce nombre doctets.
Les valeurs de dbut et de longueur peuvent tre positives ou ngatives.
Avec des combinaisons adquates de nombres positifs et ngatifs, vous
pouvez extraire une sous-chane partir du dbut ou de la fin de la chane.
Si la valeur de dbut est gale zro et que la longueur est positive, la valeur
de dbut utilise est gale 1. Si la valeur de dbut est gale zro et que la
longueur est ngative, la valeur de dbut utilise est alors gale -1.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi SUBSTRING (fonction de chane de caractres) la page 239
Exemple Linstruction suivante renvoie la valeur Test.
SELECT BYTE_SUBSTR( Test Message,1,4 )

CAST (fonction de conversion de types de donnes)


Fonction Renvoie la valeur dune expression convertie dans le type de donnes
indiqu.
Syntaxe CAST ( expression AS type de donnes )

Paramtres expression Expression convertir.


type de donnes Type de donnes cible.
Utilisation Si vous ne spcifiez pas la longueur des types de chanes de caractres, le
serveur de base de donnes choisit une longueur approprie. De mme, si
vous nindiquez ni la prcision ni lchelle dune conversion de type
DECIMAL, il slectionne les valeurs appropries.
Normes et compatibilit SQL/92 Cette fonction est compatible avec SQL/92.

116
Chapitre 3. Fonctions SQL

SQL/99 Fonction principale.


Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi CONVERT (fonction de conversion de types de donnes) la page 125
Exemple La fonction suivante garantit que la chane spcifie sera utilise en tant que
date :
SELECT CAST( 2000-10-31 AS DATE )

La valeur de lexpression 1 + 2 est calcule et le rsultat est converti en


chane forme dun caractre unique.
SELECT CAST( 1 + 2 AS CHAR )

La fonction CAST permet galement de raccourcir les chanes :


SELECT CAST( Surname AS CHAR(5) )

CEILING (fonction numrique)


Fonction Renvoie la partie entire arrondie dun nombre.
Syntaxe CEILING ( expression_numrique )

Paramtres expression_numrique Nombre dont la valeur plafond doit tre renvoye.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi FLOOR (fonction numrique) la page 160
Exemple Linstruction suivante renvoie le rsultat 60 :
SELECT CEILING( 59.84567 )

CHAR [fonction de chane de caractres]


Fonction Renvoie le caractre avec la valeur ASCII dun nombre.
Syntaxe CHAR ( expression_entier )

Paramtres expression_entier Nombre convertir en caractre ASCII. Le nombre


doit tre compris entre 0 et 255 (inclusif)
Utilisation Le caractre renvoy correspond lexpression numrique fournie dans le
jeu de caractres de la base de donnes courante, en fonction dun ordre de
tri binaire.

117
CHAR renvoie la valeur NULL pour les expressions entires dont la valeur
est suprieure 255 ou infrieure zro.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Exemple Linstruction suivante renvoie le rsultat Y :
SELECT CHAR( 89 )

CHARINDEX (fonction de chane de caractres)


Fonction Renvoie la position dune chane dans une autre chane.
Syntaxe CHARINDEX ( expression_chane1, expression_chane2 )

Paramtres expression_chane1 Chane recherche.


expression_chane2 Chane dans laquelle rechercher la prcdente.
Utilisation Le premier caractre dexpression_chane1 est identifi comme 1. Si la
chane o seffectue la recherche contient plusieurs instances de la chane
recherche, CHARINDEX renvoie la position de la premire instance.
Si elle ne contient pas la chane recherche, CHARINDEX renvoie 0 (zro).
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi SUBSTRING (fonction de chane de caractres) la page 239
Exemple Linstruction
SELECT emp_lname, emp_fname
FROM employee
WHERE CHARINDEX(K, emp_lname ) = 1

renvoie les valeurs suivantes :

emp_lname emp_fname

Klobucher James

Kuo Felicia

Kelly Moira

118
Chapitre 3. Fonctions SQL

CHAR_LENGTH (fonction de chane de caractres)


Fonction Renvoie le nombre de caractres dune chane.
Syntaxe CHAR_LENGTH ( expression_chane )

Paramtres expression_chane Chane dont la longueur doit tre calcule.


Utilisation Les espaces en fin de chane sont inclus dans la valeur renvoye.
La valeur renvoye pour une chane NULL est NULL.
Si la chane est exprime dans un jeu de caractres cods sur plusieurs
octets, la valeur CHAR_LENGTH diffre du nombre doctets renvoy par
BYTE_LENGTH.
Normes et compatibilit SQL/92 Cette fonction est compatible avec SQL/92.
SQL/99 Fonction principale.
Sybase Compatible avec Adaptive Server Enterprise.

Voir aussi BYTE_LENGTH (fonction de chane de caractres) la page 115


Exemple Linstruction suivante renvoie le rsultat 8.
SELECT CHAR_LENGTH( Chemical )

COALESCE (fonction diverse)


Fonction Renvoie la valeur de la premire expression non NULL dune liste.
Syntaxe COALESCE ( expression, expression [ , . . .] )

Paramtres expression Expression quelconque.


Normes et compatibilit SQL/92 SQL/92.
SQL/99 Fonction principale.
Sybase Compatible avec Adaptive Server Enterprise.
Exemple Linstruction suivante renvoie le rsultat 34 :
SELECT COALESCE( NULL, 34, 13, 0 )

COMPARE (fonction de chane de caractres)


Fonction Permet de comparer directement deux chanes de caractres selon dautres
rgles de classement.

119
Syntaxe COMPARE (
expression_chane1,
expression_chane1
[ , nom_classement | , id_classement ] )

Paramtres expression_chane1 Premire expression de type chane.


expression_chane2 Seconde expression de type chane.
Les expressions de type chane ne peuvent contenir que des caractres cods
dans le jeu de caractres de la base de donnes.
nom_classement Variable de type chane ou caractre qui indique le nom
de lordre de tri utiliser. Pour obtenir la liste des noms de classement
corrects, reportez-vous la section SORTKEY (fonction de chane de
caractres) la page 229.
id_classement Variable ou constante entire qui indique lordre de tri
utiliser. Vous ne pouvez utiliser un ID de classement que pour les
classements prdfinis. Pour plus dinformations, reportez-vous la section
SORTKEY (fonction de chane de caractres) la page 229.
Si vous ne spcifiez pas de nom ni dID de classement, cest le classement
Unicode multilingue par dfaut qui est utilis.
Utilisation Selon les rgles de classement choisies, la fonction COMPARE renvoie les
valeurs suivantes :

Valeur Signification

1 expression_chane1 est suprieure expression_chane2

0 expression_chane1 est gale expression_chane2

-1 expression_chane1 est infrieure expression_chane2


Pour la fonction COMPARE, les chanes vides et celles qui ne contiennent
que des espaces ne sont pas identiques, mme si le remplissage des chanes
laide de blancs est activ dans la base de donnes. COMPARE utilise la
fonction SORTKEY afin de gnrer des cls de classement pour la
comparaison. Ainsi, une chane vide, une chane contenant un espace et une
chane comportant deux espaces ne sont pas considres comme identiques.
Si la valeur dexpression_chane1 ou dexpression_chane2 est NULL, le
rsultat est NULL.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.

120
Chapitre 3. Fonctions SQL

Voir aussi SORTKEY (fonction de chane de caractres) la page 229

COMPRESS (fonction de chane de caractres)


Fonction Compacte la chane et renvoie une valeur LONG BINARY.
Syntaxe COMPRESS( expression_chane [, algorithme ]

Paramtres expression_chane Chane compacter. Les valeurs binaires peuvent tre


transmises cette fonction. Ce paramtre fait la distinction
majuscules/minuscules, mme si les bases de donnes ne la font pas.
algorithme Le seul algorithme actuellement pris en charge est zip. Il est
utilis par dfaut.
Utilisation La fonction COMPRESS renvoie une valeur LONG BINARY plus courte
que la chane binaire transmise la fonction. Cette valeur nest pas lisible. Si
la valeur renvoye est plus longue que la chane dorigine, sa taille maximale
ne dpassera pas la taille de la chane dorigine de 0,1 % + 12 octets. Vous
pouvez dcompacter une expression_chane compacte laide de la
fonction DECOMPRESS.
Si les valeurs compactes sont stockes dans une table, la colonne doit tre
de type BINARY ou LONG BINARY pour que la conversion du jeu de
caractres ne soit pas ralise sur les donnes.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi DECOMPRESS (fonction de chane de caractres) la page 144
Exemple Dans lexemple qui suit, la fonction COMPRESS est utilise pour compacter
les donnes de la table product_xml_info ci-dessous.

121
prod_id prod_info

301 <product_info>
<item_name>Tee Shirt
</item_name>
<quantity_left>54
</quantity_left>
<description>Medium Orange Tee
Shirt
</description>
</product_info>

302 <product_info>
<item_name>Tee Shirt
</item_name>
<quantity_left>75
</quantity_left>
<description>One size fits all
Black Tee Shirt
</description>
</product_info>

Obtient la valeur compacte de la colonne prod_info du produit 302 :


SELECT COMPRESS(prod_info)
FROM product_xml_info
WHERE prod_id = 302

CONNECTION_PROPERTY (fonction systme)


Fonction Renvoie, sous forme de chane, la valeur de la proprit spcifie.
Syntaxe CONNECTION_PROPERTY (
{ expression_entier1 | expression_chane }
[ , expression_entier2 ] )

Paramtres expression_entier1 Dans bien des cas, il est plus pratique de fournir une
expression de type chane comme premier argument. Si vous indiquez un
entier, il sagit de lID de proprit de la connexion. Au besoin, utilisez la
fonction PROPERTY_NUMBER pour le dterminer.
expression_chane Nom de proprit de la connexion. LID de proprit
ou le nom de proprit doit tre spcifi.
Pour une liste complte des proprits de connexion, reportez-vous la
section Proprits de niveau connexion [ASA - Guide dadministration,
page 775].

expression_entier2 ID de connexion de la base de donnes courante. Si


vous omettez cet argument, la connexion courante est utilise.

122
Chapitre 3. Fonctions SQL

Utilisation Si vous omettez le second argument, la connexion courante est utilise.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Compatible avec Adaptive Server Enterprise.


Voir aussi Proprits de niveau connexion [ASA - Guide dadministration, page 775]
PROPERTY_NUMBER (fonction systme) la page 207
Exemple Linstruction suivante renvoie le nombre dinstructions prpares qui sont
gres.
SELECT connection_property( PrepStmt )

CONFLICT (fonction diverse)


Fonction Indique si une colonne est source de conflit pour une instruction UPDATE
excute sur une base de donnes consolide dans un environnement SQL
Remote.
Syntaxe CONFLICT ( nom_colonne )

Paramtres nom_colonne Nom de la colonne faisant lobjet dun test de conflits.


Utilisation Renvoie la valeur TRUE si la colonne apparat dans la liste VERIFY dune
instruction UPDATE excute par lagent de message SQL Remote et si la
valeur fournie dans la liste VALUES de cette instruction ne correspond pas
la valeur initiale de la colonne dans la ligne en cours de mise jour. Dans le
cas contraire, la valeur FALSE est renvoye.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non supporte par Adaptive Server Enterprise.
Voir aussi Instruction CREATE TRIGGER la page 438
Gestion des conflits [SQL Remote - Guide de lutilisateur, page 124]
Exemple La fonction CONFLICT est conue pour tre utilise dans les triggers
RESOLVE UPDATE de SQL Remote afin dviter les messages derreur.
Pour illustrer lutilisation de la fonction CONFLICT, prenez la table suivante
:
CREATE TABLE Admin (
PKey bigint NOT NULL DEFAULT GLOBAL AUTOINCREMENT,
TextCol CHAR(20) NULL,
PRIMARY KEY (PKey)
);

123
Supposez que les bases de donnes distante et consolide possdent toutes
les deux la ligne suivante dans la table Admin :
1, Initial

Dans la base de donnes consolide, mettez prsent la ligne jour de la


manire suivante :
UPDATE Admin
SET TextCol = Consolidated Update
WHERE PKey = 1;

Dans la base de donnes distante, mettez la ligne jour avec une valeur
diffrente de la manire suivante :
UPDATE Admin
SET TextCol = Remote Update
WHERE PKey = 1;

Excutez ensuite dbremote sur la base de donnes distante. Le fichier de


messages cr comporte linstruction suivante excuter sur la base de
donnes consolide :
UPDATE cons.Admin
SET TextCol=Remote Update,
VERIFY (TextCol)
VALUES (Initial)
WHERE PKey=1

Lorsque lagent de message SQL Remote est excut sur la base de donnes
consolide et quil applique cette instruction UPDATE, Adaptive Server
Anywhere utilise les clauses VERIFY et VALUES pour dterminer si un
trigger RESOLVE UPDATE se dclenchera. Ce trigger se dclenche
uniquement lorsque la mise jour est excute partir de lagent de message
SQL Remote sur une base de donnes consolide. Exemple de trigger
RESOLVE UPDATE :
CREATE TRIGGER ResolveUpdateAdmin
RESOLVE UPDATE ON cons.Admin
REFERENCING OLD AS OldConsolidated
NEW AS NewRemote
REMOTE as OldRemote
FOR EACH ROW BEGIN
MESSAGE OLD;
MESSAGE OldConsolidated.PKey || , ||
OldConsolidated.TextCol;
MESSAGE NEW;
MESSAGE NewRemote.PKey || , || NewRemote.TextCol;
MESSAGE REMOTE;
MESSAGE OldRemote.PKey || , || OldRemote.TextCol;
END;

124
Chapitre 3. Fonctions SQL

Le trigger RESOLVE UPDATE se dclenche car la valeur courante de la


colonne TextCol dans la base de donnes consolide (Consolidated
Update) ne correspond pas la valeur dans la clause VALUES de la
colonne associe (Initial).
Ce trigger choue car la colonne PKey na pas t modifie dans
linstruction UPDATE excute sur la base de donnes distance. Aucune
valeur OldRemote.PKey nest alors accessible depuis ce trigger.
La fonction CONFLICT permet dviter cette erreur en renvoyant les valeurs
suivantes :
En labsence de valeur OldRemote.PKey, la valeur FALSE est renvoye.
Si une valeur OldRemote.PKey est fournie et quelle correspond
OldConsolidated.PKey, la valeur FALSE est renvoye.
Si une valeur OldRemote.PKey est fournie mais quelle ne correspond
pas OldConsolidated.PKey, la valeur TRUE est renvoye.
Afin dviter lerreur, vous pouvez utiliser la fonction CONFLICT pour
rcrire le trigger comme suit :
CREATE TRIGGER ResolveUpdateAdmin
RESOLVE UPDATE ON cons.Admin
REFERENCING OLD AS OldConsolidated
NEW AS NewRemote
REMOTE as OldRemote
FOR EACH ROW BEGIN
message OLD;
message OldConsolidated.PKey || , ||
OldConsolidated.TextCol;
message NEW;
message NewRemote.PKey || , || NewRemote.TextCol;
message REMOTE;
if CONFLICT( PKey ) then
message OldRemote.PKey;
end if;
if CONFLICT( TextCol ) then
message OldRemote.TextCol;
end if;
END;

CONVERT (fonction de conversion de types de donnes)


Fonction Renvoie une expression convertie dans le type de donnes indiqu.
Syntaxe CONVERT ( type de donnes, expression [ , style_format ] )

Paramtres type de donnes Type de donnes dans lequel lexpression est convertie.
expression Expression convertir.

125
style_format Largument style_format est un numro de code de style qui
dcrit le format de date utiliser pour convertir des chanes en dates ou en
heures et vice versa. Les valeurs de largument style_format ont les
significations suivantes :

Sans sicle (aa) Avec sicle Rsultat


(aaaa)

- 0 ou 100 mmm jj aaaa hh:nn:ss:sss AM (ou PM)

1 101 mm/jj/aa[aa]
2 102 [aa]aa.mm.jj

3 103 jj/mm/aa[aa]

4 104 jj.mm.aa[aa]

5 105 jj-mm-aa[aa]

6 106 jj mmm aa[aa]

7 107 mmm jj, aa[aa]

8 108 hh:nn:ss

- 9 ou 109 mmm jj aaaa hh:nn:ss:sssAM (ou PM)

10 110 mm-jj-aa[aa]

11 111 [aa]aa/mm/jj

12 112 [aa]aammjj

13 113 jj mmm aaa hh:nn:ss:sss (format 24


heures, Europe + millisecondes, anne
4 chiffres)

14 114 hh:nn:ss:sss (format 24 heures)

20 120 aaaa-mm-jj hh:nn:ss:sss (format 24


heures, conforme ODBC, anne sur 4
chiffres)

21 121 yyyy-mm-dd hh:nn:ss.sss (format 24


heures, conforme ODBC avec millise-
condes, anne 4 chiffres)

Si aucun argument style_format nest fourni, le code de style 0 est utilis.


Pour obtenir une description des styles produits par chaque symbole de

126
Chapitre 3. Fonctions SQL

sortie (tel que Mmm), reportez-vous la section Option DATE_FORMAT


[compatibilit] [ASA - Guide dadministration, page 704].
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi CAST (fonction de conversion de types de donnes) la page 116
Exemple Les instructions suivantes illustrent lemploi des styles de formatage :
SELECT CONVERT( CHAR( 20 ), order_date, 104 )
FROM sales_order

order_date

16.03.2000

20.03.2000

23.03.2000

25.03.2000
...
SELECT CONVERT( CHAR( 20 ), order_date, 7 )
FROM sales_order

order_date

Mar 16, 00

Mar 20, 00

Mar 23, 00

Mar 25, 00

...
Linstruction suivante effectue une conversion dans un entier et renvoie la
valeur 5 :
SELECT CONVERT( integer, 5.2 )

CORR (fonction dagrgat)


Fonction Renvoie le coefficient de corrlation dun jeu de paires de nombres.
Syntaxe CORR ( expression_dpendante, expression_indpendante )

127
Paramtres expression_dpendante Variable concerne par la variable indpendante.
expression_indpendante Variable qui influence le rsultat.
Utilisation La fonction renvoie une valeur numrique. Si la fonction est applique un
jeu vide, elle renvoie une valeur NULL.
Les paramtres expression_dpendante et expression_indpendante sont
numriques. Cette fonction sapplique au jeu de paires
(expression_dpendante, expression_indpendante ) aprs limination des
paires dans lesquelles expression_dpendante ou expression_indpendante a
la valeur NULL. Le calcul suivant est effectu :
COVAR_POP ( x, y ) / STDDEV_POP ( x ) * STDDEV_POP ( y )
o x reprsente lexpression_dpendante et y lexpression_indpendante.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Fonction principale/SQL extrieure au langage SQL basique.

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi Fonctions dagrgat la page 96
COVAR_POP (fonction dagrgat) la page 130
STDDEV_POP (fonction dagrgat) la page 235
Exemple Dans lexemple qui suit, une corrlation est ralise afin de dcouvrir si
lge est associ au niveau de revenus. Cette fonction renvoie la valeur
0.44022675645995957.
SELECT CORR (salary, (year(now()) - year(birth_date))) FROM
employee

COS (fonction numrique)


Fonction Renvoie le cosinus dun nombre.
Syntaxe COS ( expression_numrique )

Paramtres expression_numrique Angle en radians.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi ACOS (fonction numrique) la page 110
COT (fonction numrique) la page 129
SIN (fonction numrique) la page 229

128
Chapitre 3. Fonctions SQL

TAN (fonction numrique) la page 241


Exemple Linstruction
SELECT COS( 0.52 )

renvoie la valeur 0.86781 .

COT (fonction numrique)


Fonction Renvoie la cotangente dun nombre.
Syntaxe COT ( expression_numrique )

Paramtres expression_numrique Angle en radians.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi COS (fonction numrique) la page 128
SIN (fonction numrique) la page 229
TAN (fonction numrique) la page 241
Exemple Linstruction suivante renvoie le rsultat 1.74653 :
SELECT COT( 0.52 )

COUNT (fonction dagrgat)


Fonction Compte le nombre de lignes dans un groupe, en fonction des paramtres
spcifis.
Syntaxe COUNT (
*
| expression
| DISTINCT { expression | nom_colonne } )

Paramtres * Renvoie le nombre de lignes dans chaque groupe.


expression Renvoie le nombre de lignes dans chaque groupe, o
expression nest pas une valeur NULL.
DISTINCT expression ou nom_colonne Renvoie le nombre de valeurs
diffrentes dans lexpression ou la colonne portant le nom nom_colonne. Les
lignes avec la valeur NULL ne sont pas incluses dans le comptage.
Normes et compatibilit SQL/92 Compatible SQL/92.
SQL/99 Extension propritaire.

129
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi AVG (fonction dagrgat) la page 113
SUM (fonction dagrgat) la page 241
Exemple Linstruction suivante renvoie chaque ville unique et le nombre de lignes
avec chacune des valeurs :
SELECT city , Count(*)
FROM employee
GROUP BY city

COVAR_POP (fonction dagrgat)


Fonction Renvoie la covariance de remplissage dun jeu de paires de nombres.
Syntaxe COVAR_POP ( expression_dpendante, expression_indpendante )

Paramtres expression_dpendante Variable concerne par la variable indpendante.


expression_indpendante Variable qui influence le rsultat.
Utilisation La fonction renvoie une valeur numrique. Si la fonction est applique un
jeu vide, elle renvoie une valeur NULL.
Les paramtres expression_dpendante et expression_indpendante sont
numriques. Cette fonction sapplique au jeu de paires
(expression_dpendante, expression_indpendante ) aprs limination de
toutes les paires dans lesquelles expression_dpendante ou
expression_indpendante a la valeur NULL. Le calcul suivant est ensuite
effectu :
(SUM ( x * y ) - SUM ( y ) * SUM ( x ) * SUM ( x ) / n ) / n
o x reprsente lexpression_dpendante et y lexpression_indpendante.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Fonction principale/SQL extrieure au langage SQL basique.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi COVAR_SAMP (fonction dagrgat) la page 131
SUM (fonction dagrgat) la page 241
Exemple Dans lexemple qui suit, le rapport entre lge et le salaire des employs est
mesur. Cette fonction renvoie la valeur 73785.84005866687.
SELECT COVAR_POP (salary, (year(now()) - year(birth_date)))
FROM employee

130
Chapitre 3. Fonctions SQL

COVAR_SAMP (fonction dagrgat)


Fonction Renvoie la covariance dchantillon dun jeu de paires de nombres.
Syntaxe COVAR_SAMP ( expression_dpendante, expression_indpendante )
Paramtres expression_dpendante Variable concerne par la variable indpendante.
expression_indpendante Variable qui influence le rsultat.
Utilisation La fonction renvoie une valeur numrique. Si la fonction est applique un
jeu vide, elle renvoie une valeur NULL.
Les paramtres expression_dpendante et expression_indpendante sont
numriques. Cette fonction sapplique au jeu de paires
(expression_dpendante, expression_indpendante ) aprs limination de
toutes les paires dans lesquelles expression_dpendante ou
expression_indpendante a la valeur NULL. Le calcul suivant est ensuite
effectu :
(SUM ( x * y ) - SUM ( x ) * SUM ( y ) / n ) / ( n -1 )
o x reprsente lexpression_dpendante et y lexpression_indpendante.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Fonction principale/SQL extrieure au langage SQL basique.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi COVAR_POP (fonction dagrgat) la page 130
SUM (fonction dagrgat) la page 241
Exemple Lexemple suivant renvoie la valeur 74782.94600540561.
SELECT COVAR_SAMP (salary, (year(now()) - year(birth_date)))
FROM employee

CSCONVERT (fonction de chane de caractres)


Fonction Convertit les chanes dans les diffrents jeux de caractres.
Syntaxe CSCONVERT (
expression_chane,
jeucar_cible
[ , jeucar_source ] )

Paramtres expression_chane Chane.


jeucar_cible Jeu de caractres cible. Il peut sagir dun des types suivants :

131
jeucar_os Jeu de caractres utilis par le systme dexploitation.
jeucar_db Jeu de caractres utilis par la base de donnes.
tout autre libell de jeu de caractres pris en charge Vous pouvez
spcifier tout autre libell de jeu de caractres pris en charge par Adaptive
Server Anywhere. Pour plus dinformations, reportez-vous la section
Libells du jeu de caractres [ASA - Guide dadministration, page 404].
jeucar_source Jeu de caractres utilis par lexpression chane dorigine.
La valeur par dfaut est jeucar_db. nom_jeucar_source peut tre lun des
noms suivants :
jeucar_os Jeu de caractres utilis par le systme dexploitation.
jeucar_db Jeu de caractres utilis par la base de donnes.
tout autre libell de jeu de caractres pris en charge Vous pouvez
spcifier tout autre libell de jeu de caractres pris en charge par Adaptive
Server Anywhere. Pour plus dinformations, reportez-vous la section
Libells du jeu de caractres [ASA - Guide dadministration, page 404].
Normes et compatibilit SQL/92 Compatible SQL/92.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi Dmarrage dun serveur de base de donnes avec loption de conversion
du jeu de caractres [ASA - Guide dadministration, page 390]
Exemples Ce fragment convertit la colonne mytext depuis le jeu de caractres Chinois
traditionnel vers le jeu de caractres Chinois simplifi :
SELECT CSCONVERT (mytext, cp936, cp950)
FROM mytable

Ce fragment convertit la colonne mytext depuis le jeu de caractres de la


base de donnes vers le jeu de caractres Chinois simplifi :
SELECT CSCONVERT (mytext, cp936)
FROM mytable

Un nom de fichier stock dans la base de donnes est aussi stock dans le jeu
de caractres de cette base de donnes. Si le serveur est cens lire ou crire
dans un fichier dont le nom est stock dans une base de donnes (par
exemple, dans une procdure externe), le nom de fichier doit tre
explicitement converti dans le jeu de caractres du systme dexploitation
avant tout accs au fichier. Les noms de fichier stocks dans la base de
donnes et rcuprs par le client sont automatiquement convertis dans le jeu

132
Chapitre 3. Fonctions SQL

de caractres du client. Par consquent, aucune conversion explicite nest


ncessaire.
Le fragment suivant convertit la colonne filename du jeu de caractres de la
base de donnes dans celui du systme dexploitation :
SELECT CSCONVERT (filename, os_charset)
FROM mytable

Une table contient une liste de noms de fichier. Une procdure stocke
externe prend un nom de fichier dans cette table comme paramtre et lit les
informations directement partir de ce fichier. Linstruction suivante
fonctionne lorsque la conversion de jeu de caractres nest pas requise :
SELECT MYFUNC( filename )
FROM mytable

mytable tant une table qui contient une colonne filename. Toutefois, si vous
deviez convertir filename dans le jeu de caractres du systme
dexploitation, il vous faudrait utiliser linstruction suivante :
SELECT MYFUNC( csconvert( filename, os_charset ) )
FROM mytable

CUME_DIST (fonction dagrgat)


Fonction Calcule la position relative dune valeur au sein dun groupe de lignes.
Renvoie une valeur dcimale comprise entre 0 et 1.
Syntaxe CUME_DIST ( )

Utilisation Les cls de tri composes ne sont par autorises dans la fonction
CUME_DIST. Elles peuvent tre utilises avec toutes les autres fonctions de
rang.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Fonctionnalit SQL/OLAP T611

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi DENSE_RANK (fonction dagrgat) la page 147
PERCENT_RANK (fonction dagrgat) la page 203
RANK (fonction dagrgat) la page 209
ROW_NUMBER (fonction dagrgat) la page 224
Exemple Dans lexemple qui suit, un jeu de rsultats fournissant la distribution
cumule des salaires des employs habitant en Californie est renvoy.

133
SELECT dept_id, emp_lname, salary,
CUME_DIST () OVER (PARTITION BY dept_id
ORDER BY salary DESC) "Rank"
FROM employee
WHERE state IN (CA)

Le jeu de rsultats est le suivant :

dept_id emp_lname salary Rank

200 Savarino 72300.000


0.333333333333333

200 Clark 45000.000


0.666666666666667

200 Overbey 39300.000 1

DATALENGTH (fonction systme)


Fonction Renvoie la longueur, en octets, du rsultat dune expression.
Syntaxe DATALENGTH ( expression )

Paramtres expression Lexpression est gnralement un nom de colonne. Sil sagit


dune constante de type chane, dlimitez-la par des guillemets.
Utilisation Les valeurs renvoyes par DATALENGTH sont les suivantes :

Type de donnes DATALENGTH

SMALLINT 2

INTEGER 4

DOUBLE 8

CHAR Longueur des donnes.

BINARY Longueur des donnes.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Exemple Linstruction suivante renvoie la valeur 27, qui correspond la chane la plus
longue de la colonne company_name.
SELECT following MAX( DATALENGTH( company_name ) )
FROM customer

134
Chapitre 3. Fonctions SQL

DATE (fonction de date et dheure)


Fonction Convertit lexpression en une date et supprime les heures, les minutes et les
secondes.
Syntaxe DATE ( expression )

Paramtres expression Valeur convertir au format de date. Lexpression est en


gnral une chane.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Linstruction suivante renvoie la valeur 1999-01-02 sous la forme dune date.
SELECT DATE( 1999-01-02 21:20:53 )

DATEADD (fonction de date et dheure)


Fonction Renvoie la date gnre lorsquun nombre spcifique de parties de date est
ajout la date.
Syntaxe DATEADD ( partie_date, expression_numrique, expression_date )

partie_date :
year | quarter | month | week | day | hour | minute | second | millisecond

Paramtres partie_date Partie de date ajouter la date.


Pour plus dinformations sur les parties de date, reportez-vous Parties
de date la page 99.
expression_numrique Nombre de parties de date ajouter la date.
Lexpression_numrique peut tre de type numrique, mais sa valeur est
tronque de faon se prsenter sous la forme dun entier.
expression_date Date modifier.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Compatible avec Adaptive Server Enterprise.


Exemple Linstruction suivante renvoie la valeur : 1995-11-02 00:00:00.0.

135
SELECT dateadd( month, 102, 1987/05/02 )

DATEDIFF (fonction de date et dheure)


Fonction Renvoie lintervalle entre deux dates.
Syntaxe DATEDIFF ( partie_date, expression_date1, expression_date2 )

partie_date :
year | quarter | month | week | day | hour | minute | second | millisecond

Paramtres partie_date Spcifie la partie de date dans laquelle lintervalle doit tre
mesur.
Pour plus dinformations sur les parties de date, reportez-vous Parties
de date la page 99.
expression_date1 Date de dbut de lintervalle. Cette valeur est soustraite
de lexpression_date2 pour renvoyer le nombre de parties_date entre les
deux arguments.
expression_date2 Date de fin de lintervalle. Cette valeur est soustraite de
lExpression_date1 pour renvoyer le nombre de parties_date entre les deux
arguments.
Utilisation Cette fonction permet de calculer le nombre de parties de date comprises
entre deux dates spcifies. Le rsultat est un entier sign gal (date2 -
date1), exprim en parties de date.
Le rsultat de DATEDIFF est tronqu, et non arrondi, lorsquil nest pas un
multiple pair de la partie de date.
Lorsque vous utilisez daycomme partie de date, DATEDIFF renvoie le
nombre de valeurs minuit comprises entre les deux heures spcifies, la
seconde date tant incluse (mais pas la premire).
Lorsque vous utilisez month comme partie de date, DATEDIFF renvoie le
nombre de premiers du mois compris entre les deux dates spcifies, la
seconde date tant incluse (mais pas la premire).
Lorsque vous utilisez week comme partie de date, DATEDIFF renvoie le
nombre de dimanches compris entre les deux dates spcifies, la seconde
date tant incluse (mais pas la premire).
Pour les units de temps plus petites, il y a des valeurs doverflow :
millisecondes 24 jours
secondes 68 annes

136
Chapitre 3. Fonctions SQL

minutes 4083 annes


autres Pas de limite doverflow

La fonction renvoie une erreur doverflow en cas de dpassement de ces


limites.
Normes et compatibilit SQL/92 Extension de Transact-SQL.
SQL/99 Extension de Transact-SQL.
Sybase Compatible avec Adaptive Server Enterprise.
Exemple Linstruction suivante renvoie 1 :
SELECT datediff( hour, 4:00AM, 5:50AM )

Linstruction suivante renvoie 102 :


SELECT datediff( month, 1987/05/02, 1995/11/15 )

Linstruction suivante renvoie 0 :


SELECT datediff( day, 00:00, 23:59 )

Linstruction suivante renvoie 4 :


SELECT datediff( day,
1999/07/19 00:00,
1999/07/23 23:59 )

Linstruction suivante renvoie 0 :


SELECT datediff( month, 1999/07/19, 1999/07/23 )

Linstruction suivante renvoie 1 :


SELECT datediff( month, 1999/07/19, 1999/08/23 )

DATEFORMAT (fonction de date et dheure)


Fonction Renvoie une chane reprsentant une expression_date dans le format spcifi.
Syntaxe DATEFORMAT ( expression_dateheure, expression_chane )

Paramtres expression_dateheure Date (date/heure) convertir.


expression_chane Format de la date convertie.
Pour plus dinformations sur les formats de date, reportez-vous la section
Option DATE_FORMAT [compatibilit] [ASA - Guide dadministration,
page 704].

137
Utilisation Vous pouvez associer expression_chane nimporte quel format de date
autoris.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.

Conformit An 2000
Avec la fonction DATEFORMAT, il est possible de produire une chane
comportant une anne reprsente par deux chiffres. Ceci peut tre lori-
gine de problmes lis au changement de millnaire, mme en labsence
derreur.
Pour plus dinformations sur la conformit An 2000, reportez-vous la
section Conformit An 2000 la page 89.
Voir aussi Option DATE_FORMAT [compatibilit] [ASA - Guide dadministration,
page 704]

Exemple Linstruction suivante renvoie le rsultat Jan 01, 1989 :


SELECT DATEFORMAT( 1989-01-01, Mmm dd, yyyy )

DATENAME (fonction de date et dheure)


Fonction Renvoie, sous forme de chane de caractres, le libell de la partie spcifie
(comme le mois June) dune valeur DATETIME.
Syntaxe DATENAME ( partie_date, expression_date )

Paramtres partie_date Partie de date nommer.


Pour obtenir la liste complte des parties de date admises, reportez-vous
la section Parties de date la page 99.
expression_date Date pour laquelle le nom de la partie de date doit tre
renvoy. Elle doit contenir le champ partie_date.
Utilisation Si le rsultat est numrique, comme 23 pour le jour, DATENAME renvoie
une chane.
Normes et compatibilit SQL/92 Extension de Transact-SQL.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Exemple Linstruction suivante renvoie le rsultat May :

138
Chapitre 3. Fonctions SQL

SELECT datename( month , 1987/05/02 )

DATEPART (fonction de date et dheure)


Fonction Renvoie la valeur pour la partie spcifie dune valeur DATETIME.
Syntaxe DATEPART ( partie_date, expression_date )

Paramtres partie_date Partie de date renvoyer.


Pour obtenir la liste complte des parties de date admises, reportez-vous
la section Parties de date la page 99.
expression_date Date pour laquelle la partie de date doit tre renvoye.
Elle doit contenir le champ partie_date.
Normes et compatibilit SQL/92 Extension de Transact-SQL.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Exemple Linstruction suivante renvoie le rsultat 5 :
SELECT datepart( month , 1987/05/02 )

DATETIME (fonction de date et dheure)


Fonction Convertit lexpression en estampille.
Syntaxe DATETIME ( expression )

Paramtres expression Expression convertir. Il sagit en gnral dune chane. Toute


tentative de conversion de valeurs numriques renvoie une erreur.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

Exemple Linstruction suivante renvoie la valeur 1998-09-09 12:12:12.000.


SELECT DATETIME( 1998-09-09 12:12:12.000 )

DAY (fonction de date et dheure)


Fonction Renvoie un nombre compris entre 1 et 31, correspondant au jour du mois
dans la date indique.

139
Syntaxe DAY ( expression_date )

Paramtres expression_date Date.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Linstruction suivante renvoie le rsultat 12 :
SELECT DAY( 2001-09-12 )

DAYNAME (fonction de date et dheure)


Fonction Renvoie le nom du jour de la semaine de la date indique.
Syntaxe DAYNAME( expression_date )

Paramtres expression_date Date.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Linstruction suivante renvoie le rsultat Saturday :
SELECT DAYNAME ( 1987/05/02 )

DAYS (fonction de date et dheure)


Fonction Si une seule date est indique, cette fonction renvoie le nombre de jours
entre cette date et le 0000-02-29.
Si deux dates sont indiques, elle renvoie le nombre de jours entier entre ces
deux dates. Dans ce cas, il est prfrable dutiliser la fonction DATEDIFF
(fonction de date et dheure) la page 136.
Si une date et un entier sont indiqus, cette fonction ajoute le nombre de
jours entier la date indique. Dans ce cas, il est prfrable dutiliser la
fonction DATEADD (fonction de date et dheure) la page 135.
La syntaxe 1 renvoie un entier. La syntaxe 2 renvoie une estampille.
DAYS ignore les heures, les minutes et les secondes.
Syntaxe 1 DAYS ( [ expression_dateheure, ] expression_dateheure )

Syntaxe 2 DAYS ( expression_dateheure, expression_entier )

140
Chapitre 3. Fonctions SQL

Paramtres expression_dateheure Date et heure.


expression_entier Nombre de jours ajouter expression_dateheure. Si
la valeur dexpression_entier est ngative, le nombre de jours appropri est
soustrait de lestampille. Si vous indiquez une expression_entier,
expression_dateheure doit tre explicitement convertie au format date ou
timestamp.
Pour plus dinformations sur la conversion des types de donnes,
reportez-vous la section CAST (fonction de conversion de types de
donnes) la page 116.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Linstruction suivante renvoie le rsultat 729 889 :
SELECT DAYS( 1998-07-13 06:07:12 )

Linstruction suivante renvoie le jour courant selon le calendrier julien :


SELECT DAYS( CURRENT DATE ) + 1721119

Les instructions suivantes renvoient lentier 366, ce qui signifie que la


deuxime date est antrieure la premire de 366 jours. Il est conseill
dutiliser le second exemple (DATEDIFF).
SELECT DAYS( 1998-07-13 06:07:12,
1997-07-12 10:07:12 )
SELECT DATEDIFF( day,
1998-07-13 06:07:12,
1997-07-12 10:07:12 )

Les instructions suivantes renvoient lestampille 1999-07-14 00:00:00.0. Il


est conseill dutiliser le second exemple (DATEADD).
SELECT DAYS( CAST(1998-07-13 AS DATE ), 366 )
SELECT DATEADD( day, 366, 1998-07-13 )

DB_ID (fonction systme)


Fonction Renvoie lID de la base de donnes.
Syntaxe DB_ID ( [ nom_basededonnes ] )

Paramtres nom_basededonnes Chane contenant le nom de la base de donnes. En


labsence de spcification de nom_basededonnes, lID de la base de
donnes courante est renvoy.

141
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Compatible avec Adaptive Server Enterprise.

Exemple Linstruction suivante renvoie 0 si asademo est la seule base active :


SELECT DB_ID( asademo )

Linstruction suivante renvoie 0 si la fonction est excute sur la seule base


active :
SELECT DB_ID()

DB_NAME (fonction systme)


Fonction Renvoie le nom dune base de donnes dsigne par un ID.
Syntaxe DB_NAME ( [ id_basededonnes ] )

Paramtres id_basededonnes ID de la base de donnes id_basededonnes doit tre


une expression numrique.
Utilisation En cas de non spcification de lID de base de donnes, le nom de la base de
donnes courante est renvoy.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.

Exemple Linstruction ci-dessous renvoie le nom de base de donnes asademo


lorsquelle est excute sur la base exemple et que celle-ci est la seule base
active sur le serveur.
SELECT DB_NAME( 0 )

DB_EXTENDED_PROPERTY (fonction systme)


Fonction Renvoie la valeur de la proprit spcifie. Permet de spcifier un paramtre
de type chane facultatif propre la proprit.
Syntaxe DB_EXTENDED_PROPERTY (
{ id_proprit | nom_proprit },
[, argument_proprit
[, { id_basededonnes | nom_basededonnes } ] ])

Paramtres id_proprit ID de proprit de la base de donnes.

142
Chapitre 3. Fonctions SQL

nom_proprit Nom de proprit de la base de donnes.


id_basededonnes ID de la base de donnes, tel que DB_ID le renvoie.
En gnral, cest le nom de la base qui est utilis.
nom_basededonnes Nom de la base de donnes tel que le renvoie la
fonction DB_NAME.
argument_proprit Paramtre de type chane facultatif spcifique qui est
associ aux proprits FileSize et FreePages. Si vous fournissez un argument
spcifique pour une proprit qui nen exige pas (par exemple, un proprit
autre que FileSize ou FreePages), llment est ignor. Pour obtenir la liste
des proprits, reportez-vous la section Proprits de niveau base de
donnes [ASA - Guide dadministration, page 796].
Utilisation Renvoie une chane. Si vous omettez le second argument, la base de donnes
courante est utilise.
Db_extended_property() est identique db_property(), part quelle permet
de spcifier un paramtre de type chane facultatif propre la proprit.
Linterprtation de cet argument dpend de lID ou du nom de la proprit
spcifi dans le premier argument. Appeler db_extended_property( x )
revient appeler db_property( x ).
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

Voir aussi DB_ID (fonction systme) la page 141


DB_NAME (fonction systme) la page 142
Proprits de niveau base de donnes [ASA - Guide dadministration,
page 796]

Exemple Linstruction suivante renvoie la taille de fichier en pages du dbspace


systme.
SELECT DB_EXTENDED_PROPERTY( FileSize )

Linstruction suivante renvoie la taille de fichier en pages du journal de


transactions.
SELECT DB_EXTENDED_PROPERTY( FileSize, translog)

DB_PROPERTY (fonction systme)


Fonction Renvoie la valeur de la proprit spcifie.

143
Syntaxe DB_PROPERTY (
{ id_proprit | nom_proprit }
[, { id_basededonnes | nom_basededonnes } ] )

Paramtres id_proprit ID de proprit de la base de donnes.


nom_proprit Nom de proprit de la base de donnes.
id_basededonnes ID de la base de donnes, tel que DB_ID le renvoie.
En gnral, cest le nom de la base qui est utilis.
nom_basededonnes Nom de la base de donnes tel que le renvoie la
fonction DB_NAME.
Utilisation Renvoie une chane. Si vous omettez le second argument, la base de donnes
courante est utilise.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi DB_ID (fonction systme) la page 141
DB_NAME (fonction systme) la page 142
Proprits de niveau base de donnes [ASA - Guide dadministration,
page 796]

Exemple Linstruction suivante renvoie la taille de page de la base courante, en octets :


SELECT DB_PROPERTY( PAGESIZE )

DECOMPRESS (fonction de chane de caractres)


Fonction Dcompacte la chane et renvoie une valeur LONG BINARY.
Syntaxe DECOMPRESS( expression_chane [, algorithme ])

Paramtres expression_chane Chane dcompacter. Les valeurs binaires peuvent


galement tre transmises cette fonction. Ce paramtre fait la distinction
majuscules/minuscules, mme si les bases de donnes ne la font pas.
algorithme La valeur par dfaut est zip. Il sagit de lunique algorithme
actuellement disponible.
Utilisation La fonction DECOMPRESS renvoie une valeur LONG BINARY. Elle peut
tre utilise pour dcompacter une valeur qui a t compacte laide de la
fonction COMPRESS.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

144
Chapitre 3. Fonctions SQL

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi COMPRESS (fonction de chane de caractres) la page 121
Exemple Dans lexemple qui suit, la fonction DECOMPRESS est utilise pour
dcompacter une valeur qui a t compacte par la fonction COMPRESS.
INSERT INTO product_xml_info
VALUES (400, COMPRESS(<product_info>
<item_name>Baseball Cap</item_name>
<quantity_left>112</quantity_left>
<description>One size fits all Black Baseball Cap</description>
</product_info>))

Dans la mesure o la valeur dorigine tait de type XML, la fonction CAST


est utilise pour convertir la valeur LONG BINARY renvoye par la fonction
DECOMPRESS sous forme de donnes XML.
SELECT CAST (DECOMPRESS( prod_info ) AS XML)
FROM product_xml_info
WHERE prod_id = 400

DECRYPT (fonction de chane de caractres)


Fonction Dcrypte la chane laide de la cl fournie et renvoie une valeur LONG
BINARY.
Syntaxe DECRYPT( expression-chane, cl [, algorithme ] )

Paramtres expression_chane Chane dcrypter. Les valeurs binaires peuvent


galement tre transmises cette fonction. Ce paramtre fait la distinction
majuscules/minuscules, mme si les bases de donnes ne la font pas.
cl Cl de cryptage requise pour dcrypter lexpression_chane. Cette cl
doit tre identique celle utilise pour crypter lexpression_chane afin
dobtenir la valeur dorigine qui a t crypte. Ce paramtre fait la
distinction majuscules/minuscules, mme si les bases de donnes ne la font
pas.

Attention
Protgez votre cl. Veillez en conserver une copie dans un emplacement
sr. Lorsquune cl est perdue, les donnes cryptes deviennent totalement
inaccessibles et impossibles rcuprer.
algorithme Ce paramtre facultatif spcifie lalgorithme utilis pour
dcrypter lexpression_chane. Lexpression_chane doit tre dcrypte
laide du mme algorithme utilis pour son cryptage. AES (Advanced
Encryption Standard) est actuellement le seul algorithme pris en charge. Il
est utilis par dfaut. Il sagit dun algorithme de cryptage en bloc adopt par

145
le NIST (National Institute of Standards and Technology) comme nouveau
standard de cryptage pour le chiffrement par bloc.
Utilisation Vous pouvez utiliser la fonction DECRYPT pour dcrypter une
expression_chane qui a t crypte laide de la fonction ENCRYPT. Cette
fonction renvoie une valeur LONG BINARY ayant le mme nombre doctets
que la chane dentre.
Pour russir le dcryptage dune expression_chane, vous devez utiliser la
mme cl de cryptage utilis pour crypter des donnes. Si vous indiquez une
cl de cryptage incorrecte, une erreur est gnre. Une cl perdue se traduit
par des donnes inaccessibles et impossibles rcuprer.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.

Voir aussi ENCRYPT (fonction de chane de caractres) la page 149


Cryptage de parties dune base de donnes [SQL Anywhere Studio
Scurit, page 23]

Exemple Dans lexemple qui suit, le mot de passe dun utilisateur est dcrypt partir
de la table user_info. La fonction CAST est utilise pour convertir le mot de
passe en type de donnes CHAR car la fonction DECRYPT convertit les
valeurs en type de donnes LONG BINARY.
SELECT CAST (DECRYPT(user_pwd, 8U3dkA) AS CHAR(100)) FROM
user_info;

DEGREES (fonction numrique)


Fonction Convertit en degrs un nombre exprim en radians.
Syntaxe DEGREES ( expression_numrique )

Paramtres expression_numrique Angle en radians.


Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Compatible avec Adaptive Server Enterprise.
Exemple Linstruction suivante renvoie le rsultat 29.793805 :
SELECT DEGREES( 0.52 )

146
Chapitre 3. Fonctions SQL

DENSE_RANK (fonction dagrgat)


Fonction Calcule le rang dune valeur dans une partition. En cas de valeurs gales,
DENSE_RANK ne laisse pas aucun vide dans la squence de classement.
Syntaxe DENSE_RANK ( )

Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Fonctionnalit SQL/OLAP T611

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi CUME_DIST (fonction dagrgat) la page 133
PERCENT_RANK (fonction dagrgat) la page 203
RANK (fonction dagrgat) la page 209
ROW_NUMBER (fonction dagrgat) la page 224
Exemple Dans lexemple qui suit, un jeu de rsultats donnant le classement du salaire
des employs travaillant dans lUtah et dans lEtat de New York est renvoy.
Bien que le jeu de rsultats contienne 19 enregistrements, seuls 18 rangs
sont numrs en raison dune galit au 7me rang : le 7me et le 8me
employ de la liste ont des salaires identiques. Le 9me employ se place
dont au rang numro 8 et non au rang numro 9 car DENSE_RANK ne
laisse aucun vide entre les rangs.
SELECT dept_id, emp_lname, salary, state,
DENSE_RANK () OVER (ORDER BY salary DESC) "Rank"
FROM employee
WHERE state IN (NY,UT)

Le jeu de rsultats est le suivant :

emp_lname salary state Rank

Shishov 72995.000 UT 1

Wang 68400.000 UT 2

Cobb 62000.000 UT 3

Morris 61300.000 UT 4

Davidson 57090.000 NY 5

Martel 55700.000 NY 6
Blaikie 54900.000 NY 7

Diaz 54900.000 UT 7

147
emp_lname salary state Rank

Driscoll 48023.000 UT 8

Hildebrand 45829.000 UT 9

Whitney 45700.000 NY 10

Guevara 42998.000 NY 11
Soo 39075.000 NY 12

Goggin 37900.000 UT 13

Wetherby 35745.000 NY 14

Ahmed 34992.000 NY 15

Rebeiro 34576.000 UT 16
Bigelow 31200.000 UT 17

Lynch 24903.000 UT 18

DIFFERENCE (fonction de chane de caractres)


Fonction Renvoie la diffrence entre la valeur SOUNDEX des deux expressions de
chane.
Syntaxe DIFFERENCE ( expression_chane1, expression_chane2 )

Paramtres expression_chane1 Premier argument SOUNDEX.


expression_chane2 Second argument SOUNDEX.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi SOUNDEX (fonction de chane de caractres) la page 232
Exemple Linstruction suivante renvoie le rsultat 3 :
SELECT DIFFERENCE( test, chest )

DOW (fonction de date et dheure)


Fonction Renvoie un nombre compris entre 1 et 7, reprsentant le jour de la semaine
dans la date indique, avec Sunday=1, Monday=2, etc.

148
Chapitre 3. Fonctions SQL

Syntaxe DOW ( expression_date )

Paramtres expression_date Date.


Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Linstruction suivante renvoie le rsultat 5 :
SELECT DOW( 1998-07-09 )

ENCRYPT (fonction de chane de caractres)


Fonction Crypte les valeurs spcifies avec la cl de cryptage fournie et renvoie une
valeur LONG BINARY.
Syntaxe ENCRYPT( expression-chane, cl [, algorithme ] )

Paramtres expression_chane Donnes crypter. Les valeurs binaires peuvent


galement tre transmises cette fonction. Ce paramtre fait la distinction
majuscules/minuscules, mme si les bases de donnes ne la font pas.
cl Cl de cryptage utilise pour crypter lexpression_chane. Cette mme
cl doit tre utilise pour dcrypter la valeur afin dobtenir la valeur
dorigine. Ce paramtre fait la distinction majuscules/minuscules, mme si
les bases de donnes ne la font pas.
Comme pour la plupart des mots de passe, il faut choisir une valeur de cl
qui ne peut pas tre devine facilement. Nous vous conseillons de choisir
une valeur de cl contenant au moins 16 caractres, des majuscules et des
minuscules, des chiffres, des lettres et des caractres spciaux. Cette cl vous
sera demande chaque fois que vous souhaiterez dcrypter des donnes.

Attention
Protgez votre cl. Veillez en conserver une copie dans un emplacement
sr. Lorsquune cl est perdue, les donnes cryptes deviennent totalement
inaccessibles et impossibles rcuprer.
algorithme Algorithme utilis pour crypter les donnes Ce paramtre est
facultatif, mais les donnes doivent tre cryptes et dcryptes laide du
mme algorithme. AES (Advanced Encryption Standard) est actuellement le
seul algorithme pris en charge. Il est utilis par dfaut. Il sagit dun
algorithme de cryptage en bloc adopt par le NIST (National Institute of
Standards and Technology) comme nouveau standard de cryptage pour le
chiffrement par bloc.

149
Utilisation Cette fonction renvoie une valeur LONG BINARY, qui contient au moins
31 octets de plus que lexpression_chane dentre. La valeur renvoye par
cette fonction nest pas lisible. Vous pouvez utiliser la fonction DECRYPT
pour dcrypter une expression_chane qui a t crypte laide de la
fonction ENCRYPT. Pour russir le dcryptage dune expression_chane,
vous devez utiliser la mme cl de cryptage et le mme algorithme utiliss
pour crypter des donnes. Si vous indiquez une cl de cryptage incorrecte,
une erreur est gnre. Une cl perdue se traduit par des donnes
inaccessibles et impossibles rcuprer.
Si les valeurs cryptes sont stockes dans une table, la colonne doit tre de
type BINARY ou LONG BINARY pour que la conversion du jeu de
caractres ne soit pas ralise sur les donnes.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Fonction principale/SQL extrieure au langage SQL basique.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi DECRYPT (fonction de chane de caractres) la page 145
Cryptage de parties dune base de donnes [SQL Anywhere Studio
Scurit, page 23]

Exemple Le trigger qui suit crypte la colonne user_pwd de la table user_info. Cette
colonne contient les mots de passe des utilisateurs. Le trigger se dclenche
ds que le mot de passe est modifi.
CREATE TRIGGER encrypt_updated_pwd
BEFORE UPDATE OF user_pwd
ON user_info
REFERENCING NEW AS new_pwd
FOR EACH ROW
BEGIN
SET new_pwd.user_pwd=ENCRYPT(new_pwd.user_pwd, 8U3dkA);
END

ERRORMSG (fonction diverse)


Fonction Fournit un message derreur pour lerreur courante ou pour une valeur
SQLSTATE ou SQLCODE donne.
Syntaxe ERRORMSG ( [ sqlstate | sqlcode ] )

sqlstate : chane

sqlcode: entier

Paramtres sqlstate Valeur SQLSTATE pour laquelle le message derreur doit tre
renvoy.

150
Chapitre 3. Fonctions SQL

sqlcode Valeur SQLCODE pour laquelle le message derreur doit tre


renvoy.
Valeur renvoye Chane contenant le message derreur. Si aucun argument nest spcifi,
cest le message derreur correspondant ltat courant qui est renvoy. Les
substitutions appropries (de nom de table ou de colonne, par exemple) sont
alors effectues.
Si un argument est spcifi, cest le message derreur correspondant la
valeur SQLSTATE ou SQLCODE indique qui est renvoy, sans aucune
substitution. Les noms de table et de colonne sont indiqus sous forme de
marques de rservation (%1).
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi Messages derreur indexs par SQLSTATE [ASA - Messages derreur,
page 40]
Messages derreur indexs par SQLCODE Adaptive Server Anywhere
[ASA - Messages derreur, page 2]

Exemple Linstruction suivante renvoie le message derreur correspondant la valeur


SQLCODE -813 :
select errormsg( -813 )

ESTIMATE (fonction diverse)


Fonction Fournit des estimations de slectivit pour loptimiseur de requtes, bases
sur les paramtres spcifis.
Syntaxe ESTIMATE ( nom_colonne [, valeur [, chane_relation ] ] )

Paramtres nom_colonne Colonne utilise dans lestimation.


valeur Valeur laquelle la colonne est compare.
chane_relation Oprateur de comparaison mis entre apostrophes ;
loprateur par dfaut est = .
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi INDEX_ESTIMATE (fonction diverse) la page 174
ESTIMATE_SOURCE (fonction diverse) la page 152

151
Exemple Linstruction suivante renvoie une estimation du nombre de valeurs emp_id
suprieures 200. La valeur exacte dpend des actions que vous avez
accomplies dans la base de donnes.
SELECT FIRST ESTIMATE( emp_id, 200, > )
FROM employee

ESTIMATE_SOURCE (fonction diverse)


Fonction Fournit la source utilise par loptimiseur de requtes pour fournir des
estimations de slectivit.
Syntaxe ESTIMATE_SOURCE (
nom_colonne
[, valeur [ , chane_relation ] ] )

Paramtres nom_colonne Nom de la colonne sur laquelle porte la recherche.


valeur Valeur laquelle la colonne est compare. Cette valeur est
facultative.
chane_relation Oprateur de comparaison mis entre apostrophes.
Loprateur par dfaut est le signe gal (= ).
Valeur renvoye Lestimation de slectivit peut avoir plusieurs sources :
Statistics est utilis comme source lorsque vous avez fourni une valeur
et quil existe une statistique stocke qui estime la slectivit moyenne de
la valeur dans la colonne. La statistique nest disponible que si la
slectivit de la valeur est un nombre suffisamment significatif stock
dans les statistiques. Actuellement, une valeur est considre comme
significative si elle figure dans au moins 1 % des lignes.
Column est similaire Statistics, ceci prs que la slectivit de la
valeur correspond moins de 1 % des lignes. Dans ce cas, la slectivit
utilise est la moyenne de toutes les valeurs stockes dans les statistiques
qui figurent dans moins de 1 % des lignes.
Guess est renvoy en labsence dindex appropri et lorsquaucune
statistique na t collecte pour la colonne. Dans ce cas, des estimations
prdfinies sont utilises.
Column-column est renvoy lorsque lestimation utilise est la
slectivit dune jointure. Dans ce cas, lestimation est calcule comme le
nombre de lignes du jeu de rsultats joint, divis par le nombre de lignes
du produit cartsien des deux tables.
Index est utilis comme source lorsquaucune statistique nest
disponible pour estimer la slectivit, mais quil existe un index pouvant

152
Chapitre 3. Fonctions SQL

tre analys dans ce but.


User est renvoy lorsquil existe une estimation fournie par lutilisateur
et que loption de base de donnes USER_ESTIMATES nest pas dfinie
DISABLED.
Pour plus dinformations, reportez-vous la section Option
USER_ESTIMATES [base de donnes] [ASA - Guide dadministration,
page 762].

Computed est renvoy lorsque loptimiseur calcule des statistiques


partir dautres informations. Par exemple, Adaptive Server Anywhere ne
tient pas jour des statistiques sur plusieurs colonnes, de sorte que si
vous souhaitez une estimation portant sur une quation multicolonne, par
exemple x = 5 et y = 10, et quil existe des statistiques sur les colonnes x
et y, loptimiseur cre une estimation en multipliant la slectivit estime
de chaque colonne.
Always est utilis lorsque le test est par dfinition vrai. Par exemple : la
valeur est 1 = 1.
Combined est utilis lorsque loptimiseur combine plusieurs des
sources prcdentes.
Bounded peut qualifier une des autres sources. Cette valeur signifie
quAdaptive Server Anywhere a impos une limite suprieure et/ou
infrieure pour lestimation. Cest ce que fait loptimiseur pour maintenir
des estimations dans des limites logiques. Par exemple, il sassure quune
estimation nest pas suprieure 100 % ou que la slectivit nest pas
infrieure une ligne.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi ESTIMATE (fonction diverse) la page 151
INDEX_ESTIMATE (fonction diverse) la page 174
Exemple Linstruction suivante renvoie la valeur Index, ce qui signifie que
loptimiseur de requtes a analys un index pour estimer la slectivit.
SELECT FIRST ESTIMATE_SOURCE( emp_id, 200, > )
FROM employee

EVENT_CONDITION (fonction systme)


Fonction Spcifie le moment o une routine de gestion dvnement est dclenche.

153
Syntaxe EVENT_CONDITION ( nom_condition )

Paramtres nom_condition Condition qui dclenche lvnement. Les valeurs


possibles sont prdfinies dans la base de donnes et la distinction
majuscules/minuscules nest pas applicable. Chaque condition nest correcte
que pour certains types dvnement. Les conditions et les vnements pour
lesquels elles sont correctes sont :

Nom de la condi- Units Valide pour. . . Commentaires


tion

DBFreePercent N/A DBDiskSpace


DBFreeSpace Mo DBDiskSpace

DBSize Mo GrowDB

ErrorNumber N/A RAISERROR

IdleTime se- ServerIdle


condes

Interval se- Tous Temps coul depuis la


condes dernire excution de la
routine.

LogFreePercent N/A LogDiskSpace

LogFreeSpace Mo LogDiskSpace
LogSize Mo GrowLog

RemainingValues entier GlobalAutoincre- Nombre de valeurs res-


ment tantes.

TempFreePercent N/A TempDiskSpace

TempFreeSpace Mo TempDiskSpace

TempSize Mo GrowTemp

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi Instruction CREATE EVENT la page 364
Exemple La dfinition dvnement ci-dessous utilise la fonction event_condition :

154
Chapitre 3. Fonctions SQL

create event LogNotifier


type LogDiskSpace
where event_condition( LogFreePercent ) < 50
handler
begin
message LogNotifier message
end

EVENT_CONDITION_NAME (fonction systme)


Fonction Permet dtablir la liste des paramtres admis pour EVENT_CONDITION.
Syntaxe EVENT_CONDITION_NAME ( entier )

Paramtres entier Entier suprieur ou gal 0.


Utilisation Vous pouvez utiliser EVENT_CONDITION_NAME pour obtenir la liste de
tous les arguments EVENT_CONDITION en bouclant sur des entiers
jusqu ce que la fonction renvoie la valeur NULL.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

Voir aussi Instruction CREATE EVENT la page 364

EVENT_PARAMETER (fonction systme)


Fonction Fournit des informations contextuelles pour les routines de gestion
dvnement.
Syntaxe EVENT_PARAMETER ( nom_contexte )

nom_contexte :
AppInfo
| ConnectionID
| DisconnectReason
| EventName
| Executions
| NumActive
| ScheduleName
| TableName
| User
| nom_condition
Paramtres nom_contexte Une des chanes prdfinies. Les chanes sont sans
distinction majuscules/minuscules et comportent les informations suivantes :

155
AppInfo Valeur de la proprit de connexion AppInfo pour la connexion
ayant provoqu le dclenchement de lvnement. Vous pouvez afficher
la valeur de la proprit en utilisant linstruction suivante :
SELECT connection_property(AppInfo)

Ce paramtre convient aux vnements Connect, Disconnect,


ConnectFailed, BackupEnd et RAISERROR. La chane AppInfo contient
le nom de lordinateur et de lapplication de la connexion cliente pour les
connexions Embedded SQL, ODBC, OLE DB, ADO.NET et du pilote
JDBC iAnywhere.
ConnectionId ID de la connexion ayant provoqu le dclenchement de
lvnement.
DisconnectReason Chane indiquant la raison pour laquelle la
connexion a t interrompue. Ce paramtre ne sapplique quaux
vnements Disconnect. Les rsultats possibles sont les suivants :
from client Application client dconnecte.
drop connection Une instruction DROP CONNECTION a t
excute.
liveness Aucun paquet dactivit na t reu pour la priode
spcifie par loption serveur -tl.
inactive Aucune demande na t reue pour la priode spcifie par
loption serveur -ti.
connect failed Une tentative de connexion a chou.
EventName Nom de lvnement qui a t dclench.
Executions Nombre dexcutions de la routine de gestion dvnement.
NumActive Nombre dinstances actives dune routine de gestion
dvnement. Ce paramtre est utile pour limiter lexcution dune
routine de gestion une seule instance la fois.
ScheduleName Nom de la planification ayant entran le
dclenchement dun vnement. Si lvnement a t dclench
manuellement laide de TRIGGER EVENT ou en tant quvnement
systme, le rsultat sera une chane vide. Si aucun nom na t affect
explicitement la planification lors de sa cration, son nom sera celui de
lvnement.
TableName Nom de la table, utiliser avec RemainingValues.
User ID de lutilisateur ayant provoqu le dclenchement de
lvnement.

156
Chapitre 3. Fonctions SQL

En outre, vous pouvez accder tous les arguments de nom_condition


corrects pour la fonction EVENT_CONDITION partir de la fonction
EVENT_PARAMETER.
Le tableau suivant indique les valeurs de nom de contexte qui sont correctes
pour chaque type dvnement.

Valeur de nom_- Types dvnements systme corrects


contexte

AppInfo BackupEnd, Connect, ConnectFailed, Discon-


nect, RAISERROR, vnements utilisateur

ConnectionID BackupEnd, Connect, Disconnect, Global Au-


toincrement, RAISERROR, vnements utilisateur

DisconnectReason Disconnect
EventName all

Executions all

NumActive all

TableName GlobalAutoincrement

User BackupEnd, Connect, ConnectFailed, Discon-


nect, GlobalAutoincrement, RAISERROR, v-
nements utilisateur

Exemple Lexemple suivant montre comment passer un paramtre de chane un


vnement. Lvnement affiche lheure laquelle il a t dclench sur la
console du serveur.
CREATE EVENT ev_PassedParameter
HANDLER
BEGIN
MESSAGE ev_PassedParameter - was triggered at || event_
parameter(time);
END;
TRIGGER EVENT ev_PassedParameter("Time"=string(current
timestamp));

Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi EVENT_CONDITION (fonction systme) la page 153

157
Instruction CREATE EVENT la page 364
Instruction TRIGGER EVENT la page 673

EXP (fonction numrique)


Fonction Renvoie la fonction exponentielle e la puissance indique.
Syntaxe EXP ( expression_numrique )

Paramtres expression_numrique Exposant.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Exemple Linstruction suivante renvoie le rsultat 3269017.372 :
SELECT EXP( 15 )

EXPERIENCE_ESTIMATE (fonction diverse)


Fonction Cette fonction est identique la fonction ESTIMATE, ceci prs quelle
neffectue de recherches que dans la table des frquences.
Syntaxe EXPERIENCE_ESTIMATE (
nom_colonne
[ , valeur [, chane_relation ] ] )

Paramtres nom_colonne Nom de la colonne sur laquelle porte la recherche.


valeur Valeur laquelle la colonne est compare.
chane_relation Oprateur de comparaison mis entre apostrophes ;
loprateur par dfaut est = .
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi ESTIMATE (fonction diverse) la page 151
Exemple Linstruction suivante renvoie NULL :
SELECT DISTINCT EXPERIENCE_ESTIMATE( emp_id, 200, > )
FROM employee

158
Chapitre 3. Fonctions SQL

EXPLANATION (fonction diverse)


Fonction Renvoie la stratgie doptimisation de plans courts dune instruction SQL
sous forme de chane.
Syntaxe EXPLANATION (
expression_chane [ type_curseur ],
tat_mise__jour ] )

Paramtres expression_chane Instruction SQL qui est le plus souvent une


instruction SELECT, mais qui peut aussi tre UPDATE ou DELETE.
type_curseur Chane. Cursor-type peut tre asensitive (par dfaut),
insensitive, sensitive ou keyset-driven.
tat_mise__jour Paramtre de chane qui accepte lune des valeurs
suivantes indiquant comment loptimiseur doit traiter le curseur donn :

Valeur Description

READ-ONLY Le curseur est en mode lecture seule.

READ-WRITE Le curseur peut tre en mode lecture ou criture.


(par dfaut)

FOR UPDATE Le curseur peut tre en mode lecture ou criture. Cette


valeur a exactement le mme effet que READ-WRITE.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi PLAN (fonction diverse) la page 204
GRAPHICAL_PLAN (fonction diverse) la page 163
GRAPHICAL_ULPLAN (fonction diverse) la page 164
LONG_ULPLAN (fonction diverse) la page 184
SHORT_ULPLAN (fonction diverse) la page 227
Exemple Linstruction suivante transmet une instruction SELECT sous forme de
paramtre de chane et renvoie le plan pour excuter la requte.
SELECT EXPLANATION(
SELECT * FROM department WHERE dept_id > 100 )

Ces informations sont utiles lorsque vous devez dcider de lajout dindex
ou pour dterminer la structure la plus adapte votre base de donnes en
vue damliorer les performances.

159
Linstruction suivante renvoie une chane contenant la forme abrge du plan
textuel pour un curseur A SENSIBILITE INDEFINIE dans la requte select
* from department where . . ...
SELECT EXPLANATION(
SELECT * FROM department WHERE dept_id > 100,
insensitive,
read-only )

Dans Interactive SQL, vous pouvez visualiser le plan renvoy par nimporte
quelle instruction SQL dans longlet Plan du volet Rsultats.

EXPRTYPE (fonction diverse)


Fonction Renvoie une chane qui identifie le type de donnes dune expression.
Syntaxe EXPRTYPE ( expression_chane, expression_entier )

Paramtres expression_chane Instruction SELECT. Lexpression dont le type de


donnes est recherch doit figurer dans la liste de slection. Si la chane nest
pas une instruction SELECT correcte, la valeur NULL est renvoye.
expression_entier Position de lexpression voulue dans la liste de
slection. Le premier lment de la liste de slection porte le numro 1. Si la
valeur de lexpression entire ne correspond pas un lment de la liste
SELECT, la valeur NULL est renvoye.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

Voir aussi Types de donnes SQL la page 55


Exemple Linstruction suivante renvoie smallint lorsquelle est excute sur la base
de donnes exemple.
SELECT EXPRTYPE(
SELECT line_id FROM sales_order_items, 1 )

FLOOR (fonction numrique)


Fonction Renvoie la partie entire arrondie dun nombre.
Syntaxe FLOOR ( expression_numrique )

Paramtres expression_numrique Nombre, gnralement en virgule flottante.


Normes et compatibilit SQL/92 Extension propritaire.

160
Chapitre 3. Fonctions SQL

SQL/99 Extension propritaire.


Sybase Compatible avec Adaptive Server Enterprise.

Voir aussi CEILING (fonction numrique) la page 117


Exemple

Valeur FLOOR (Valeur)

123 123

123.45 123

123.45 124

GET_IDENTITY (fonction diverse)


Fonction Alloue des valeurs une colonne autoincrement. Cette fonction constitue
une alternative lutilisation de lauto-incrmentation pour gnrer des
nombres.
Syntaxe GET_IDENTITY ( [ propritaire.] nom_table [, nombre__allouer ],. . . )

Paramtres nombre__allouer La valeur par dfaut est 1.


Utilisation Lutilisation de lauto-incrmentation ou de lauto-incrmentation globale
est toujours la mthode la plus efficace pour gnrer des ID, mais cette
fonction fait office de solution de remplacement. Elle suppose que la table
contient une colonne autoincrement. Elle renvoie la valeur disponible
suivante qui serait gnre pour la colonne autoincrement de la table, puis
rserve cette valeur afin quaucune autre connexion ne lutilise par dfaut.
La fonction renvoie une erreur si la table est introuvable ; elle renvoie la
valeur NULL si la table ne contient aucune colonne autoincrement. Sil
existe plusieurs colonnes autoincrement, la fonction utilise la premire
colonne quelle trouve.
Si la valeur de nombre__allouer est suprieure 1, la fonction rserve
galement les valeurs restantes. Lallocation suivante utilise le nombre
courant plus la valeur de nombre__allouer. Cela permet lapplication
dexcuter get_identity moins frquemment.
Aucun commit nest ncessaire aprs lexcution de get_identity ; ainsi,
lappel peut tre effectu en utilisant la mme connexion que pour linsertion
des lignes. Si des valeurs dID sont requises pour plusieurs tables, elles
peuvent tre obtenues laide dune seule instruction SELECT incluant
plusieurs appels get_identity, comme dans lexemple ci-dessus.

161
GET_IDENTITY est une fonction non dterministe. Des appels successifs
GET_IDENTITY peuvent renvoyer des valeurs diffrentes. Loptimiseur de
requtes ne met pas en mmoire cache les rsultats de la fonction
GET_IDENTITY.
Pour plus dinformations sur les fonctions non dterministes,
reportez-vous la section Mise en mmoire cache des fonctions [ASA -
Guide de lutilisateur SQL, page 485].

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi Instruction CREATE TABLE la page 425
Instruction ALTER TABLE la page 305
NUMBER (fonction diverse) la page 196
Exemple Linstruction suivante effectue trois appels la fonction GET_IDENTITY :
SELECT GET_IDENTITY(T1),
GET_IDENTITY(T2,10),
GET_IDENTITY(T3,5)

GETDATE (fonction de date et dheure)


Fonction Renvoie lanne, le mois, le jour, lheure, les minutes, les secondes et les
fractions de seconde. La prcision de lheure est limite par la prcision de
lhorloge systme.
Les informations renvoyes par la fonction GETDATE sont quivalentes aux
informations renvoyes par la fonction NOW et la valeur spciale
CURRENT TIMESTAMP.
Syntaxe GETDATE ()

Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi NOW (fonction de date et dheure) la page 194
Valeur spciale CURRENT TIMESTAMP la page 36
Exemple Linstruction suivante renvoie la date et lheure systme :
SELECT GETDATE( )

162
Chapitre 3. Fonctions SQL

GRAPHICAL_PLAN (fonction diverse)


Fonction Renvoie la stratgie doptimisation de plans dune instruction SQL au
format XML, sous forme de chane.
Syntaxe GRAPHICAL_PLAN (
expression_chane
[ , niveau_statistiques
[ , type_curseur
[, tat_mise__jour ] ] ] )

Paramtres expression_chane Instruction SQL qui est le plus souvent une


instruction SELECT, mais qui peut aussi tre UPDATE ou DELETE.
niveau_statistiques Nombre entier. niveau_statistiques peut tre lune des
valeurs suivantes :

Valeur Description

0 Inclut seulement les estimations de loptimiseur. (par


dfaut)

1 Inclut les statistiques du rcapitulatif en cours issues de


lexcution.

2 Inclut les statistiques en cours dtailles


type_curseur Chane. Cursor-type peut tre asensitive (par dfaut),
insensitive, sensitive ou keyset-driven.
tat_mise__jour Paramtre de chane qui accepte lune des valeurs
suivantes indiquant comment loptimiseur doit traiter le curseur donn :

Valeur Description

READ-ONLY Le curseur est en mode lecture seule.

READ-WRITE Le curseur peut tre en mode lecture ou criture.


(par dfaut)

FOR UPDATE Le curseur peut tre en mode lecture ou criture. Cette


valeur a exactement le mme effet que READ-WRITE.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi PLAN (fonction diverse) la page 204
EXPLANATION (fonction diverse) la page 159

163
GRAPHICAL_ULPLAN (fonction diverse) la page 164
LONG_ULPLAN (fonction diverse) la page 184
SHORT_ULPLAN (fonction diverse) la page 227
Exemples Lexemple Interactive SQL suivant transmet une instruction SELECT sous
forme de paramtre de chane et renvoie le plan pour excuter la requte. Il
enregistre le plan dans le fichier plan.xml.
SELECT GRAPHICAL_PLAN(
SELECT * FROM department WHERE dept_id > 100 );
OUTPUT TO plan.xml FORMAT FIXED

Linstruction suivante renvoie une chane contenant le plan graphique dun


curseur modifiable keyset dans la requte SELECT * FROM department
WHERE . . ... Elle commande aussi au serveur dannoter le plan avec les
statistiques dexcution en cours, outre les estimations de statistiques
utilises par loptimiseur.
SELECT GRAPHICAL_PLAN(
SELECT * FROM department WHERE dept_id > 100,
2,
keyset-driven, for update )

Dans Interactive SQL, vous pouvez visualiser le plan renvoy par nimporte
quelle instruction SQL dans longlet Plan du volet Rsultats.

GRAPHICAL_ULPLAN (fonction diverse)


Fonction Renvoie la stratgie doptimisation de plans UltraLite dune instruction SQL
au format XML, sous forme de chane. Ce plan naffiche aucune statistique.
Pour certaines requtes, le plan dexcution UltraLite peut tre diffrent du
plan slectionn pour Adaptive Server Anywhere.
Syntaxe GRAPHICAL_ULPLAN ( expression_chane )

Paramtres expression_chane Instruction SQL qui est le plus souvent une


instruction SELECT, mais qui peut aussi tre UPDATE ou DELETE.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi PLAN (fonction diverse) la page 204
EXPLANATION (fonction diverse) la page 159
GRAPHICAL_PLAN (fonction diverse) la page 163
LONG_ULPLAN (fonction diverse) la page 184
SHORT_ULPLAN (fonction diverse) la page 227

164
Chapitre 3. Fonctions SQL

Exemple Lexemple Interactive SQL suivant transmet une instruction SELECT sous
forme de paramtre de chane et renvoie le plan pour excuter la requte. Il
enregistre le plan dans le fichier plan.xml.
SELECT GRAPHICAL_ULPLAN(
select * from department where dept_id > 100 );
OUTPUT TO ulplan.xml
FORMAT FIXED

Pour afficher le plan, ouvrez le fichier ulplan.xml dans Interactive SQL.


Vous pouvez galement voir le plan dune instruction SQL dans longlet
Plan UltraLite dInteractive SQL ; choisissez Fichier Enregistrer, puis
slectionnez le type de fichier xml. Pour modifier le type du plan affich,
choisissez Outils Options, puis accdez longlet Plan.

GREATER (fonction diverse)


Fonction Renvoie la valeur la plus leve de deux valeurs de paramtre. Si les deux
valeurs de paramtre sont identiques, cest la premire qui est renvoye.
Syntaxe GREATER ( expression_1, expression_2 )

Paramtres expression_1 Valeur du premier paramtre entrant dans la comparaison.


expression_2 Valeur du second paramtre entrant dans la comparaison.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi LESSER (fonction diverse) la page 179
Exemple Linstruction suivante renvoie le rsultat 10 :
SELECT GREATER( 10,5 ) FROM dummy

GROUPING (fonction dagrgat)


Fonction Indique si une colonne dans un jeu de rsultats de lopration ROLLUP a la
valeur NULL parce quelle fait partie dune ligne de sous-total, ou en raison
des donnes sous-jacentes.
Syntaxe GROUPING ( expression_group_by )

Paramtres expression_group_by Expression qui apparat sous forme de colonne de


regroupement dans le jeu de rsultats dune requte utilisant une clause

165
GROUP BY avec le mot-cl ROLLUP. La fonction identifie les lignes de
sous-total ajoutes dans le jeu de rsultats par une opration ROLLUP.
Valeur renvoye 1 Indique que expression_group_by est NULL parce quelle fait partie
dune ligne de sous-total. La colonne nest pas une colonne de prfixe
pour cette ligne.
0 Indique que expression_group_by est une colonne de prfixe dune
ligne de sous-total.

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Fonction principale/SQL extrieure au langage SQL basique.

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi Utilisation de ROLLUP [ASA - Guide de lutilisateur SQL, page 366]
Instruction SELECT la page 627
Exemple Pour plus dinformations, reportez-vous la section Utilisation de
ROLLUP [ASA - Guide de lutilisateur SQL, page 366].

HASH (fonction de chane de caractres)


Fonction Renvoie la valeur spcifie au format hach.
Syntaxe HASH ( expression_chane [ , algorithme ] )

Paramtres expression_chane Valeur hacher. Ce paramtre fait la distinction


majuscules/minuscules, mme si les bases de donnes ne la font pas.
algorithme Lalgorithme peut tre md5 ou sha1. Par dfaut, lalgorithme
MD5 est utilis.
Utilisation Lorsque lalgorithme MD5 est utilis, cette fonction renvoie une chane
VARCHAR de 32 caractres. Avec lalgorithme SHA-1, la fonction renvoie
une chane VARCHAR de 40 caractres.
Lutilisation dun hachage permet de convertir la valeur en une squence
doctets qui est unique chaque valeur passe la fonction.

Attention
MD5 et SHA-1 sont tous deux des hachages unidirectionnels. Il est impos-
sible de recrer la chane dorigine partir du hachage.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.

166
Chapitre 3. Fonctions SQL

Exemple Dans lexemple qui suit, une table nomme user_info stockant des
informations sur les utilisateurs dune application est cre. Elle contient
lID et le mot de passe des utilisateurs.
CREATE TABLE user_info (
emp_id INTEGER NOT NULL PRIMARY KEY,
user_name CHAR(80),
user_pwd CHAR(80) );
INSERT INTO user_info VALUES ( 1, s_phillips, 8uKj2s);

Gnre le format hach du mot de passe laide de lalgorithme SHA-1 :


SELECT HASH(user_pwd, sha1)
FROM user_info
WHERE emp_id = 1;

HEXTOINT (fonction de conversion de types de donnes)


Fonction Renvoie lentier dcimal quivalent dune chane hexadcimale.
Syntaxe HEXTOINT ( chane_hexadcimale )

Paramtres chane_hexadcimale Chane convertir en entier.


Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Compatible avec Adaptive Server Enterprise.

Voir aussi INTTOHEX (fonction de conversion de types de donnes) la


page 175
Exemple Linstruction suivante renvoie le rsultat 420 :
SELECT HEXTOINT ( 1A4 )

HOUR (fonction de date et dheure)


Fonction Renvoie un nombre compris entre 0 et 23, correspondant llment heure
de la date indique.
Syntaxe HOUR ( expression_dateheure )

Paramtres expression_dateheure Date et heure.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

167
Exemple Linstruction suivante renvoie le rsultat 21 :
SELECT HOUR( 1998-07-09 21:12:13 )

HOURS (fonction de date et dheure)


Fonction Si deux estampilles sont indiques, cette fonction renvoie un entier
correspondant au nombre dheures compris entre ces deux estampilles. Dans
ce cas, il est prfrable dutiliser la fonction DATEDIFF (fonction de date
et dheure) la page 136.
Si une seule date est indique, cette fonction renvoie le nombre dheures
entre cette date et lestampille 0000-02-29 00:00:00.
Si une date et un entier sont indiqus, elle ajoute le nombre dheures entier
lestampille indique. Dans ce cas, il est prfrable dutiliser la fonction
DATEADD (fonction de date et dheure) la page 135.
La syntaxe 1 renvoie un entier. La syntaxe 2 renvoie une estampille.
Syntaxe 1 HOURS ( [ expression_dateheure, ] expression_dateheure )

Syntaxe 2 HOURS ( expression_dateheure, expression_entier )

Paramtres expression_dateheure Date et heure.


expression_entier Nombre dheures ajouter expression_dateheure. Si
la valeur dexpression_entier est ngative, le nombre dheures appropri est
soustrait de la date/heure. Si vous indiquez une expression_entier,
expression_dateheure doit tre explicitement convertie en un type de
donnes DATETIME.
Pour plus dinformations sur la conversion des types de donnes,
reportez-vous la section CAST (fonction de conversion de types de
donnes) la page 116.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Exemple Les instructions suivantes renvoient le rsultat 4, ce qui signifie que la
seconde estampille est postrieure la premire de quatre heures. Il est
conseill dutiliser le second exemple (DATEDIFF).
SELECT HOURS( 1999-07-13 06:07:12,
1999-07-13 10:07:12 )
SELECT DATEDIFF( hour,
1999-07-13 06:07:12,
1999-07-13 10:07:12 )

168
Chapitre 3. Fonctions SQL

Linstruction suivante renvoie le rsultat 17 517 342 :


SELECT HOURS( 1998-07-13 06:07:12 )

Linstruction suivante renvoie lestampille 1999-05-13 02:05:07.0 : Il est


conseill dutiliser le second exemple (DATEADD).
SELECT HOURS(
CAST( 1999-05-12 21:05:07 AS DATETIME ), 5)
SELECT DATEADD( hour, 5, 1999-05-12 21:05:07 )

HTML_DECODE (fonction)
Fonction Dcode les entits de caractres spciaux qui apparaissent dans les chanes
littrales HTML.
Syntaxe HTML_DECODE ( chane )

Paramtres chane Chane littrale arbitraire utilise dans un document HTML.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Utilisation Cette fonction renvoie largument de chane aprs avoir effectu les
substitutions suivantes :

Caractres Substitution

&quot ; &quot ;

&#39 ; &#39 ;
&amp ; &

&lt ; <

&gt ; >

&#xnn ; caractre nn
Voir aussi HTML_DECODE (fonction) la page 169
HTTP_DECODE (fonction HTTP) la page 170
Exemple

HTML_DECODE (fonction)
Fonction Code les caractres spciaux au sein des chanes insrer dans des
documents HTML.

169
Syntaxe HTML_ENCODE ( chane )

Paramtres chane Chane arbitraire qui sera utilise dans un document HTML.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.
Utilisation Cette fonction renvoie largument de chane aprs avoir effectu les
substitutions suivantes :

Caractres Substitution

&quot ;
&#39 ;

& &amp ;

< &lt ;

> &gt ;

codes nn infrieurs 0x20 &#xnn ;


Voir aussi HTML_DECODE (fonction) la page 169
HTTP_ENCODE (fonction HTTP) la page 171
Exemple

HTTP_DECODE (fonction HTTP)


Fonction Dcode les caractres spciaux au sein des chanes utiliser avec HTTP.
Syntaxe HTTP_DECODE ( chane )

Paramtres chane Chane arbitraire qui sera utilise dans une demande HTTP.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Utilisation Cette fonction renvoie largument de chane aprs avoir remplac toutes les
squences de caractres ayant la forme %nn, o nn correspond une valeur
hexadcimale, par le caractre avec le code nn. Par ailleurs, tous les signes
plus (+) sont remplacs par des espaces.
Voir aussi HTTP_ENCODE (fonction HTTP) la page 171
HTML_DECODE (fonction) la page 169

170
Chapitre 3. Fonctions SQL

Exemple

HTTP_ENCODE (fonction HTTP)


Fonction Code les caractres spciaux au sein des chanes utiliser avec HTTP.
Syntaxe HTTP_ENCODE ( chane )

Paramtres chane Chane arbitraire qui sera utilise dans une demande HTTP.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Utilisation Cette fonction renvoie largument de chane aprs avoir effectu les
substitutions suivantes : Par ailleurs, tous les caractres avec des codes
hexadcimaux infrieurs 1F ou suprieurs 7E sont remplacs par %nn,
o nn correspond au code du caractre.

Caractre Substitution

espace %20
%22

# %23

& %26

, %2C

; %3B
< %3C

> %3E

[ %5B

\ %5C

] %5D

%60

{ %7B

| %7C

} %7D

171
Voir aussi HTTP_DECODE (fonction HTTP) la page 170
HTML_DECODE (fonction) la page 169
Exemple

HTTP_HEADER (fonction HTTP)


Fonction Extrait la valeur dun en-tte HTTP.
Syntaxe HTTP_HEADER ( nom_champ )

Paramtres nom_champ Nom dun champ den-tte HTTP.


Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.

Utilisation Cette fonction renvoie la valeur du champ den-tte HTTP nomm. Elle est
utilise lors du traitement dune demande HTTP via un service Web.
Voir aussi HTTP_VARIABLE (fonction HTTP) la page 172
NEXT_HTTP_HEADER (fonction HTTP) la page 193
NEXT_HTTP_VARIABLE (fonction HTTP) la page 194

HTTP_VARIABLE (fonction HTTP)


Fonction Extrait la valeur dune variable HTTP.
Syntaxe HTTP_VARIABLE ( nom_var [ [ , instance ] , champ_en-tte ] )

Paramtres nom_var Nom de la variable HTTP.


instance Si plusieurs variables portent le mme nom, il sagit du numro
de linstance du champ, ou de la valeur NULL pour obtenir la premire
instance. Ce paramtre est utile pour slectionner des listes autorisant
plusieurs slections.
champ_en-tte Dans une demande en plusieurs parties, nom associ au
champ den-tte dsign.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Utilisation Cette fonction renvoie la valeur de la variable HTTP nomme. Elle est
utilise lors du traitement dune demande HTTP dans le cadre dun service
Web.

172
Chapitre 3. Fonctions SQL

Voir aussi HTTP_HEADER (fonction HTTP) la page 172


NEXT_HTTP_HEADER (fonction HTTP) la page 193
NEXT_HTTP_VARIABLE (fonction HTTP) la page 194

IDENTITY (fonction diverse)


Fonction Gnre des valeurs entires, partir de 1, pour chaque ligne successive dune
requte. Sa mise en oeuvre est identique celle de la fonction NUMBER.
Syntaxe IDENTITY ( expression )

Paramtres expression Une expression. Lexpression est analyse, mais ignore


pendant lexcution de la fonction.
Utilisation Pour plus dinformations sur lutilisation de la fonction IDENTITY,
reportez-vous la section NUMBER (fonction diverse) la page 196.
Normes et compatibilit SQL/92 Extension de Transact-SQL.
SQL/99 Extension de Transact-SQL.
Sybase Offre un comportement similaire celui dAdaptive Server
Enterprise.
Voir aussi NUMBER (fonction diverse) la page 196
Exemple Linstruction suivante renvoie une liste demploys numrots de faon
squentielle :
SELECT IDENTITY( 10 ), emp_lname FROM employee

IFNULL (fonction diverse)


Fonction Si la premire expression est la valeur NULL, alors la valeur de la seconde
expression est renvoye. Si la premire expression nest pas une valeur
NULL, la valeur de la troisime expression est renvoye. Si la premire
expression nest pas une valeur NULL et sil ny a pas de troisime
expression, la valeur NULL est renvoye.
Syntaxe IFNULL ( expression_1, expression_2 [ , expression_3 ] )

Paramtres expression_1 Expression valuer. De sa valeur dpend le renvoi de


lexpression 2 ou de lexpression 3.
expression_2 Valeur renvoye si expression_1 est NULL.
expression_3 Valeur renvoye si expression_1 nest pas NULL.
Normes et compatibilit SQL/92 Extension de Transact-SQL.

173
SQL/99 Extension de Transact-SQL.
Sybase Non prise en charge par Adaptive Server Enterprise.

Exemple Linstruction suivante renvoie le rsultat 66 :


SELECT IFNULL( NULL, -66 )

Linstruction suivante renvoie NULL car la premire expression nest pas


NULL et il nexiste pas de troisime expression :
SELECT IFNULL( -66, -66 )

INDEX_ESTIMATE (fonction diverse)


Fonction Cette fonction est identique la fonction ESTIMATE, ceci prs quelle
neffectue des recherches que dans un index.
Syntaxe INDEX_ESTIMATE( nom_colonne, nombre [ , chane_relation ] )

Paramtres nom_colonne Nom de la colonne utilise pour lestimation.


nombre Si vous spcifiez le nombre, la fonction renvoie, sous forme de
type de donnes REAL, le pourcentage estim utilis par loptimiseur de
requtes.
chane_relation chane_relation doit tre un oprateur de comparaison
plac entre apostrophes. La valeur par dfaut est = .
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

Voir aussi ESTIMATE (fonction diverse) la page 151


ESTIMATE_SOURCE (fonction diverse) la page 152
Exemple Linstruction suivante renvoie le rsultat 81.304607 :
SELECT FIRST ESTIMATE( emp_id, 200, > )
FROM employee

INSERTSTR (fonction de chane de caractres)


Fonction Insre une chane dans une autre chane la position indique.
Syntaxe INSERTSTR (
expression_entier ,
expression_chane1,
expression_chane2 )

174
Chapitre 3. Fonctions SQL

Paramtres expression_entier Position aprs laquelle la chane doit tre insre.


Utilisez la valeur 0 pour insrer une chane au dbut de lautre.
expression_chane1 Chane dans laquelle lautre chane doit tre insre.
expression_chane1 Chane insrer.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi STUFF (fonction de chane de caractres) la page 239
Exemple Linstruction suivante renvoie le rsultat backoffice :
SELECT INSERTSTR( 0, office , back )

INTTOHEX (fonction de conversion de types de donnes)


Fonction Renvoie une chane contenant lquivalent hexadcimal dun entier.
Syntaxe INTTOHEX ( expression_entier )

Paramtres expression_entier Entier convertir en hexadcimal.


Normes et compatibilit SQL/92 Extension de Transact-SQL.
SQL/99 Extension de Transact-SQL.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi HEXTOINT (fonction de conversion de types de donnes) la
page 167
Exemple Linstruction suivante renvoie la valeur 9c :
SELECT INTTOHEX( 156 )

CONVERT (fonction de conversion de types de donnes)


Fonction Vrifie si un argument de chane peut tre converti en date. Si une
conversion est possible, la fonction renvoie 1 ; sinon, elle renvoie 0. Si
largument est de type NULL, la valeur 0 est renvoye.
Syntaxe ISDATE ( chane )

Paramtres chane Chane analyser afin de dterminer si elle reprsente une date
correcte.
Normes et compatibilit SQL/92 Extension propritaire.

175
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

Exemple Lexemple suivant importe des donnes dun fichier externe, exporte les
lignes contenant des valeurs incorrectes, puis copie les autres lignes dans
une table permanente.
create global temporary table MyData(
person varchar(100),
birth_date varchar(30),
height_in_cms varchar(10)
) on commit preserve rows;
load table MyData from exported.dat;
unload
select *
from MyData
where isdate(birth_date)=0
or isnumeric(height_in_cms)=0
to badrows.dat;
insert into PermData
select person,birthdate,height_in_cms
from MyData
where isdate(birth_date)=1
and isnumeric(height_in_cms)=1;
commit;
drop table MyData;

ISNULL (fonction de conversion de types de donnes)


Fonction Renvoie la premire expression non NULL de la liste de paramtres.
Syntaxe ISNULL ( expression, expression [ , . . . ] )

Paramtres expression Expression tester pour savoir si elle contient une valeur
NULL.
Deux expressions au moins doivent tre passes dans la fonction.
Normes et compatibilit SQL/92 Extension de Transact-SQL.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise, si ce nest
quAdaptive Server Enterprise naccepte que deux expressions.
Voir aussi COALESCE (fonction diverse) la page 119
Exemple Linstruction suivante renvoie le rsultat -66 :
SELECT ISNULL( NULL ,-66, 55, 45, NULL, 16 )

176
Chapitre 3. Fonctions SQL

ISNUMERIC (fonction diverse)


Fonction Vrifie si un argument de chane peut tre converti en valeur numrique. Si
une conversion est possible, la fonction renvoie 1 ; sinon, elle renvoie 0. Si
largument est de type NULL, la valeur 0 est renvoye.
Syntaxe ISNUMERIC ( chane )

Paramtres chane Chane analyser afin de dterminer si elle reprsente une valeur
numrique correcte.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Exemple Lexemple suivant importe des donnes dun fichier externe, exporte les
lignes contenant des valeurs incorrectes, puis copie les autres lignes dans
une table permanente.
create global temporary table MyData(
person varchar(100),
birth_date varchar(30),
height_in_cms varchar(10)
) on commit preserve rows;
load table MyData from exported.dat;
unload
select *
from MyData
where isdate(birth_date)=0
or isnumeric(height_in_cms)=0
to badrows.dat;
insert into PermData
select person,birthdate,height_in_cms
from MyData
where isdate(birth_date)=1
and isnumeric(height_in_cms)=1;
commit;
drop table MyData;

LCASE (fonction de chane de caractres)


Fonction Convertit tous les caractres dune chane en minuscules.
Syntaxe LCASE ( expression_chane )

Paramtres expression_chane Chane convertir en minuscules.


Normes et compatibilit SQL/92 Extension propritaire.

177
SQL/99 Extension propritaire.
Sybase LCASE nest pas prise en charge pas Adaptive Server
Enterprise. En remplacement, utilisez la fonction LOWER.
Voir aussi LOWER (fonction de chane de caractres) la page 184
UCASE (fonction de chane de caractres) la page 245
UPPER (fonction de chane de caractres) la page 246
Exemple Linstruction suivante renvoie le rsultat lower case :
SELECT LCASE( LOWER CasE )

LEFT (fonction de chane de caractres)


Fonction Renvoie un nombre de caractres en partant du dbut de la chane.
Syntaxe LEFT ( expression_chane, expression_entier )

Paramtres expression_chane Chane.


expression_entier Nombre de caractres renvoyer.
Utilisation Si la chane contient des caractres cods sur plusieurs octets et si le
classement adquat est utilis, le nombre doctets renvoy peut tre
suprieur au nombre de caractres spcifi.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi RIGHT (fonction de chane de caractres) la page 223
Langues internationales et jeux de caractres [ASA - Guide
dadministration, page 349]

Exemple Linstruction suivante renvoie le rsultat choco :


SELECT LEFT( chocolate, 5 )

LENGTH (fonction de chane de caractres)


Fonction Renvoie le nombre de caractres de la chane spcifie.
Syntaxe LENGTH ( expression_chane )

Paramtres expression_chane Chane.


Utilisation Si la chane contient des caractres cods sur plusieurs octets et si le
classement adquat est utilis, LENGTH renvoie le nombre de caractres, et

178
Chapitre 3. Fonctions SQL

non le nombre doctets. Si le type de donnes de la chane est BINARY, la


fonction LENGTH se comporte comme la fonction BYTE_LENGTH.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi BYTE_LENGTH (fonction de chane de caractres) la page 115
Langues internationales et jeux de caractres [ASA - Guide
dadministration, page 349]
Exemple Linstruction suivante renvoie le rsultat 9 :
SELECT LENGTH( chocolate )

LESSER (fonction diverse)


Fonction Renvoie la valeur la moins leve de deux valeurs de paramtre. Si les deux
valeurs de paramtre sont identiques, cest la premire qui est renvoye.
Syntaxe LESSER ( expression_1, expression_2 )

Paramtres expression_1 Valeur du premier paramtre entrant dans la comparaison.


expression_2 Valeur du second paramtre entrant dans la comparaison.

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi GREATER (fonction diverse) la page 165
Exemple Linstruction suivante renvoie le rsultat 5 :
SELECT LESSER( 10,5 ) FROM dummy

LIST (fonction dagrgat)


Fonction Renvoie une liste de valeurs spares par une virgule.
Syntaxe LIST (
{ expression_chane | DISTINCT nom_colonne }
[ , chane_dlimiteur ]
[ ORDER BY expression_order_by ] )

179
Paramtres expression_chane Chane, gnralement un nom de colonne. Pour
chaque ligne, la valeur de lexpression est ajoute la liste dlimite par des
virgules.
nom_colonne DISTINCT Nom de la colonne utilise dans la requte. Pour
chaque valeur unique de la colonne, la valeur est ajoute la liste dlimite
par des virgules.
chane_dlimiteur Chane dlimiteur des lments de la liste. La valeur
par dfaut est une virgule. Si une valeur NULL ou une chane vide est
fournie, il ny a pas de dlimiteur. La chane_dlimiteur doit tre une
constante.
expression_order_by Ordonne les lments renvoys par la fonction. Cet
argument nest pas prcd dune virgule, ce qui le rend facile utiliser au
cas o aucune chane_dlimiteur nest fournie.
Lorsque le mme bloc de requte contient plusieurs fonctions LIST, celles-ci
ne peuvent pas utiliser des arguments expression_order_by diffrents.
Utilisation Les valeurs NULL ne sont pas ajoutes la liste. List(X) renvoie la
concatnation (avec dlimiteurs) de toutes les valeurs non NULL de X pour
chaque ligne du groupe. Sil nexiste pas au moins une ligne dans le groupe
avec une valeur X dfinie, LIST(X) renvoie la chane vide.
Si les arguments DISTINCT et ORDER BY sont fournis, lexpression
DISTINCT doit tre identique lexpression ORDER BY.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Exemples Linstruction suivante renvoie 48 Kennedy Court, 54 School Street.
SELECT LIST( street ) FROM employee
WHERE emp_fname = Thomas

Linstruction suivante dresse la liste des ID demploys. Chaque ligne du jeu


de rsultats contient une liste dlimite par des virgules des ID demploys
dun service donn.
SELECT LIST( emp_id )
FROM employee
GROUP BY dept_id

180
Chapitre 3. Fonctions SQL

LIST( emp_id )

102,105,160,243,247,249,266,27,. . .

129,195,299,467,641,667,690,85,. . .

148,390,586,757,879,1293,1336,. . .

184,207,318,409,591,888,992,10,. . .
191,703,750,868,921,1013,1570,. . .
Linstruction suivante trie les ID demploys sur le nom de famille :
SELECT LIST( emp_id ORDER BY emp_lname ) AS "Sorted IDs"
FROM EMPLOYEE
GROUP BY dept_id

ID tris

160,105,1250,247,266,249,445,. . .

1039,129,1142,195,667,1162,902,. . .

1336,879,586,390,757,148,1483,. . .

1751,591,1062,1191,992,888,318,. . .

1013,191,750,921,868,1658,703,. . .
Linstruction suivante renvoie des listes dlimites par des points-virgules.
Notez la position de la clause ORDER BY et du sparateur de liste :
SELECT LIST( emp_id, ; ORDER BY emp_lname ) AS "Sorted IDs"
FROM EMPLOYEE
GROUP BY dept_id

ID tris

160 ;105 ;1250 ;247 ;266 ;249 ;445 ;. . .

1039 ;129 ;1142 ;195 ;667 ;1162 ;902 ;. . .

1336 ;879 ;586 ;390 ;757 ;148 ;1483 ;. . .

1751 ;591 ;1062 ;1191 ;992 ;888 ;318 ;. . .

1013 ;191 ;750 ;921 ;868 ;1658 ;703 ;. . .


Veillez distinguer linstruction prcdente de la suivante, qui renvoie des
listes dlimites par des virgules des ID demploys tris selon la cl de tri
compose ( emp_lname, ; ):

181
SELECT LIST( emp_id ORDER BY emp_lname, ; ) AS "Sorted IDs"
FROM EMPLOYEE
GROUP BY dept_id

LOCATE (fonction de chane de caractres)


Fonction Renvoie la position dune chane au sein dune autre chane.
Syntaxe LOCATE ( expression_chane1, expression_chane2 [, expression_entier ] )

Paramtres expression_chane1 Chane dans laquelle rechercher la prcdente.


expression_chane1 Chane rechercher. Cette chane est limite
255 octets.
expression_entier Position de dbut de la recherche dans la chane. Le
premier caractre correspond la position 1. Si loffset de dbut est ngatif,
la fonction de recherche renvoie le dernier offset de chane correspondant et
non pas le premier. Un offset ngatif indique le nombre de caractres de fin
de chane exclure de la recherche. Le nombre doctets exclus est calcul
sous la forme (-1 * offset) -1.
Utilisation Si vous spcifiez expression_entier, la recherche dbute partir de cet offset
dans la chane.
La premire chane peut tre une chane longue (dpassant 255 octets), mais
la seconde est limite 255 octets. Si vous spcifiez une chane longue
comme second argument, la fonction renvoie une valeur NULL. Si la chane
est introuvable, la valeur 0 est renvoye. La recherche dune chane de
longueur zro renvoie la valeur 1. Tout argument NULL renvoie un rsultat
NULL.
Si des caractres cods sur plusieurs octets sont utiliss, avec le classement
adquat, la position de dbut et la valeur renvoye peuvent tre diffrentes de
la position byte
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Linstruction suivante renvoie le rsultat 8 :
SELECT LOCATE(
office party this week - rsvp as soon as possible,
party,
2 )

Linstruction suivante

182
Chapitre 3. Fonctions SQL

BEGIN
declare str long varchar;
declare pos int;
set str = c:\test\functions\locate.sql;
set pos = locate( str, \, -1 );
select str, pos,
substr( str, 1, pos -1 ) as path,
substr( str, pos +1 ) as filename;
END

renvoie le rsultat suivant :

str pos path filename

c:\test\functions\locate.sql 18 c:\test\functions locate.sql

LOG (fonction numrique)


Fonction Renvoie le logarithme naturel dun nombre.
Syntaxe LOG ( expression_numrique )

Paramtres expression_numrique Nombre.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi LOG10 (fonction numrique) la page 183
Exemple Linstruction suivante renvoie le rsultat 3.912023 :
SELECT LOG( 50 )

LOG10 (fonction numrique)


Fonction Renvoie le logarithme en base 10 dun nombre.
Syntaxe LOG10 ( expression_numrique )

Paramtres expression_numrique Nombre.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi LOG (fonction numrique) la page 183

183
Exemple Linstruction suivante renvoie le rsultat 1.698970 :
SELECT LOG10( 50 )

LONG_ULPLAN (fonction diverse)


Fonction Renvoie une longue description de la stratgie doptimisation de plans
UltraLite dune instruction SQL, sous forme de chane. La description est
identique celle renvoye par la fonction PLAN.
Pour certaines requtes, le plan dexcution UltraLite peut tre diffrent du
plan slectionn pour Adaptive Server Anywhere.
Syntaxe LONG_ULPLAN ( expression_chane )

Paramtres expression_chane Instruction SQL qui est le plus souvent une


instruction SELECT, mais qui peut aussi tre UPDATE ou DELETE.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi PLAN (fonction diverse) la page 204
EXPLANATION (fonction diverse) la page 159
GRAPHICAL_PLAN (fonction diverse) la page 163
GRAPHICAL_ULPLAN (fonction diverse) la page 164
SHORT_ULPLAN (fonction diverse) la page 227
Exemple Linstruction suivante transmet une instruction SELECT sous forme de
paramtre de chane et renvoie le plan pour excuter la requte.
SELECT LONG_ULPLAN(
select * from department where dept_id > 100 )

Ces informations sont utiles lorsque vous devez dcider de lajout dindex
ou pour dterminer la structure la plus adapte votre base de donnes en
vue damliorer les performances.
Dans Interactive SQL, vous pouvez visualiser le plan renvoy par nimporte
quelle instruction SQL dans longlet Plan UltraLite du volet Rsultats.

LOWER (fonction de chane de caractres)


Fonction Convertit tous les caractres dune chane en minuscules.
Syntaxe LOWER ( expression_chane )

Paramtres expression_chane Chane convertir.

184
Chapitre 3. Fonctions SQL

Normes et compatibilit SQL/92 Compatible SQL/92.


SQL/99 Fonction principale.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi LCASE (fonction de chane de caractres) la page 177
UCASE (fonction de chane de caractres) la page 245
UPPER (fonction de chane de caractres) la page 246
Exemple Linstruction suivante renvoie le rsultat lower case :
SELECT LOWER( LOWER CasE )

LTRIM (fonction de chane de caractres)


Fonction Supprime les blancs en dbut de chane (situs gauche).
Syntaxe LTRIM ( expression_chane )

Paramtres expression_chane Chane dont les blancs doivent tre supprims.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi RTRIM (fonction de chane de caractres) la page 225
TRIM (fonction de chane de caractres) la page 243
Exemple Linstruction suivante renvoie la valeur Test Message aprs suppression de
tous les blancs situs gauche.
SELECT LTRIM( Test Message )

MAX (fonction dagrgat)


Fonction Renvoie la valeur maximale dexpression pour chaque groupe de lignes.
Syntaxe MAX ( expression | DISTINCT nom de colonne )

Paramtres expression Expression dont la valeur maximale est calculer. Il sagit en


gnral dun nom de colonne.
nom_colonne DISTINCT Identique MAX( expression ), cette fonction
est incluse par souci dexhaustivit.
Utilisation Les lignes pour lesquelles la valeur dexpression est NULL sont ignores.
La fonction renvoie la valeur NULL si le groupe ne contient aucune ligne.
Normes et compatibilit SQL/92 Compatible SQL/92.

185
SQL/99 Fonction principale.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi MIN (fonction dagrgat) la page 186
Exemple Linstruction suivante renvoie la valeur 138948.000, reprsentant le salaire
maximal de la table employee.
SELECT MAX( salary )
FROM employee

MIN (fonction dagrgat)


Fonction Renvoie la valeur minimale de lexpression dans chaque groupe de lignes.
Syntaxe MIN ( expression
| DISTINCT nom de colonne )

Paramtres expression Expression dont la valeur minimale est calculer. Il sagit en


gnral dun nom de colonne.
nom_colonne DISTINCT Identique MIN( expression ), cette fonction est
incluse par souci dexhaustivit.
Utilisation Les lignes pour lesquelles la valeur dexpression est NULL sont ignores.
La fonction renvoie la valeur NULL si le groupe ne contient aucune ligne.
Normes et compatibilit SQL/92 Compatible SQL/92.
SQL/99 Fonction principale.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi MAX (fonction dagrgat) la page 185
Exemple Linstruction suivante renvoie la valeur 24903.000 qui reprsente le salaire
minimal de la table employee.
SELECT MIN( salary )
FROM employee

MINUTE (fonction de date et dheure)


Fonction Renvoie un nombre compris entre 0 et 59, correspondant llment minute
dans une date indique.
Syntaxe MINUTE ( expression_dateheure )

Paramtres expression_dateheure Date et heure.


Normes et compatibilit SQL/92 Extension propritaire.

186
Chapitre 3. Fonctions SQL

SQL/99 Extension propritaire.


Sybase Compatible avec Adaptive Server Enterprise.

Exemple Linstruction suivante renvoie le rsultat 22 :


SELECT MINUTE( 1998-07-13 12:22:34 )

MINUTES (fonction de date et dheure)


Fonction Si deux estampilles sont indiques, cette fonction renvoie un entier
correspondant au nombre de minutes compris entre ces deux estampilles.
Dans ce cas, il est prfrable dutiliser la fonction DATEDIFF (fonction de
date et dheure) la page 136.
Si une seule date est indique, cette fonction renvoie le nombre de minutes
entre cette date et lestampille 0000-02-29 00:00:00.
Si une date et un entier sont indiqus, elle ajoute le nombre de minutes entier
lestampille indique. Dans ce cas, utilisez de prfrence la DATEADD
(fonction de date et dheure) la page 135.
La syntaxe 1 renvoie un entier. La syntaxe 2 renvoie une estampille.
Syntaxe 1 MINUTES ( [ expression_dateheure, ] expression_dateheure )

Syntaxe 2 MINUTES ( expression_dateheure, expression_entier )

Paramtres expression_dateheure Date et heure.


expression_entier Nombre de minutes ajouter expression_dateheure.
Si la valeur dexpression_entier est ngative, le nombre de minutes
appropri est soustrait de la valeur dateheure. Si vous indiquez une
expression_entier, expression_dateheure doit tre explicitement convertie en
un type de donnes DATETIME.
Pour plus dinformations sur la conversion des types de donnes,
reportez-vous la section CAST (fonction de conversion de types de
donnes) la page 116.
Utilisation Cette fonction renvoyant un entier, un overflow est susceptible de se
produire si vous utilisez la syntaxe 1 avec des estampilles suprieures ou
gales 4083-03-23 02:08:00.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.

187
Exemple Les instructions suivantes renvoient le rsultat 240, ce qui signifie que la
seconde estampille est postrieure la premire de 240 secondes. Il est
conseill dutiliser le second exemple (DATEDIFF).
SELECT MINUTES( 1999-07-13 06:07:12,
1999-07-13 10:07:12 )
SELECT DATEDIFF( minute,
1999-07-13 06:07:12,
1999-07-13 10:07:12 )

Linstruction suivante renvoie le rsultat 1 051 040 527 :


SELECT MINUTES( 1998-07-13 06:07:12 )

Linstruction suivante renvoie lestampille 1999-05-12 21:10:07.0 : Il est


conseill dutiliser le second exemple (DATEADD).
SELECT MINUTES( CAST( 1999-05-12 21:05:07
AS DATETIME ), 5)
SELECT DATEADD( minute, 5, 1999-05-12 21:05:07 )

MOD (fonction numrique)


Fonction Renvoie le reste de la division dun nombre entier par un diviseur.
Syntaxe MOD ( dividende, diviseur )

Paramtres dividende Dividende dune division, ou numrateur.


diviseur Diviseur dune division, ou dnominateur.
Utilisation Les divisions impliquant un dividende ngatif donnent un rsultat ngatif ou
gal zro. Le signe du diviseur est sans effet.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Fonction principale/SQL extrieure au langage SQL basique.
Sybase Non prise en charge par Adaptive Server Enterprise.
Loprateur % est utilis comme oprateur modulo dans Adaptive Server
Enterprise.
Voir aussi REMAINDER (fonction numrique) la page 218
Exemple Linstruction suivante renvoie le rsultat 2 :
SELECT MOD( 5, 3 )

MONTH [fonction de date et dheure]


Fonction Renvoie un nombre compris entre 1 et 12, correspondant au mois de la date
indique.

188
Chapitre 3. Fonctions SQL

Syntaxe MONTH ( expression_date )

Paramtres expression_date Valeur de type DATETIME.


Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Linstruction suivante renvoie le rsultat 7 :
SELECT MONTH( 1998-07-13 )

MONTHNAME (fonction de date et dheure)


Fonction Renvoie le nom du mois de la date indique.
Syntaxe MONTHNAME ( expression_date )

Paramtres expression_date Date et heure.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Exemple Linstruction suivante renvoie le rsultat September :
SELECT MONTHNAME( 1998-09-05 )

MONTHS (fonction de date et dheure)


Fonction Si deux dates sont indiques, cette fonction renvoie un entier correspondant
au nombre de mois entre ces deux dates. Dans ce cas, il est prfrable
dutiliser la fonction DATEDIFF (fonction de date et dheure) la
page 136.
Si une seule date est indique, cette fonction renvoie un entier correspondant
au nombre de mois entre cette date et 0000-02.
Si une date et un entier sont indiqus, cette fonction ajoute le nombre entier
de mois la date indique. Dans ce cas, il est prfrable dutiliser la fonction
DATEADD (fonction de date et dheure) la page 135.
La syntaxe 1 renvoie un entier. La syntaxe 2 renvoie une estampille.
Syntaxe 1 MONTHS ( [ expression_dateheure, ] expression_dateheure )

Syntaxe 2 MONTHS ( expression_dateheure, expression_entier )

189
Paramtres expression_dateheure Date et heure.
expression_entier Nombre de mois ajouter expression_dateheure. Si
la valeur dexpression_entier est ngative, le nombre de mois appropri est
soustrait de la date. Si vous indiquez une expression_entier,
expression_dateheure doit tre explicitement convertie en un type de
donnes DATETIME.
Pour plus dinformations sur la conversion des types de donnes,
reportez-vous la section CAST (fonction de conversion de types de
donnes) la page 116.
Utilisation La valeur de MONTHS est calcule partir du nombre de premiers jours du
mois compris entre les deux dates.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Les instructions suivantes renvoient le rsultat 2, ce qui signifie que la
seconde date est postrieure la premire de deux mois. Il est conseill
dutiliser le second exemple (DATEDIFF).
SELECT MONTHS( 1999-07-13 06:07:12,
1999-09-13 10:07:12 )
SELECT DATEDIFF( month,
1999-07-13 06:07:12,
1999-09-13 10:07:12 )

Linstruction suivante renvoie le rsultat 23 982 :


SELECT MONTHS( 1998-07-13 06:07:12 )

Les instructions suivantes renvoient lestampille 1999-10-12 21:05:07.0 : Il


est conseill dutiliser le second exemple (DATEADD).
SELECT MONTHS( CAST( 1999-05-12 21:05:07
AS DATETIME ), 5)
SELECT DATEADD( month, 5, 1999-05-12 21:05:07 )

NEWID (fonction diverse)


Fonction Gnre une valeur UUID (Universally Unique Identifier Identificateur
unique universel). Un UUID est identique un GUID (Globally Unique
Identifier Identificateur unique global).
Syntaxe NEWID ( )

Paramtres Il ny a pas de paramtre associ NEWID().

190
Chapitre 3. Fonctions SQL

Utilisation La fonction NEWID()gnre une valeur didentificateur unique. Elle peut


tre utilise dans une clause DEFAULT pour une colonne.
Les UUID peuvent tre utiliss pour identifier de manire unique les lignes
dune table. Ainsi, un identificateur cr sur un ordinateur ne peut pas
correspondre un autre identificateur cr sur un autre ordinateur. Do la
possiblit de les utiliser en tant que cls dans des environnements de
rplication et de synchronisation.
NEWID est une fonction non dterministe. Des appels successifs NEWID
peuvent renvoyer des valeurs diffrentes. Loptimiseur de requtes ne met
pas en mmoire cache les rsultats de la fonction NEWID.
Pour plus dinformations sur les fonctions non dterministes,
reportez-vous la section Mise en mmoire cache des fonctions [ASA -
Guide de lutilisateur SQL, page 485].

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi Valeur NEWID par dfaut [ASA - Guide de lutilisateur SQL, page 94]
STRTOUUID (fonction de chane de caractres) la page 238
UUIDTOSTR (fonction de chane de caractres) la page 246
Type de donnes UNIQUEIDENTIFIER [Binaire] la page 79
Exemple Linstruction suivante cre une table mytab avec deux colonnes. La colonne
pk est dote dun seul type de donnes identificateur et affecte la fonction
newid() en tant que valeur par dfaut. La colonne c1 est de type integer.
CREATE TABLE T1(
pk UNIQUEIDENTIFIER PRIMARY KEY DEFAULT NEWID(),
c1 INT )

Linstruction suivante renvoie lidentificateur unique sous forme de chane.


SELECT NEWID()

Par exemple, la valeur peut tre 0xd3749fe09cf446e399913bc6434f1f08.

NEXT_CONNECTION (fonction systme)


Fonction Renvoie un numro identifiant une connexion.
Syntaxe NEXT_CONNECTION ( [ id_connexion ] [, id_basededonnes ] )

Paramtres id_connexion Entier, gnralement renvoy par un prcdent appel la


fonction NEXT_CONNECTION. Si id_connexion est NULL,
NEXT_CONNECTION renvoie le premier ID de connexion.

191
id_basededonnes Entier correspondant une des bases de donnes sur
le serveur actif. Si vous ne spcifiez pas dID de base de donnes, la base
courante est utilise. Si vous fournissez une valeur NULL,
NEXT_CONNECTION renvoie la connexion suivante, indpendamment de
la base.
Utilisation Vous pouvez utiliser NEXT_CONNECTION pour rpertorier les connexions
une base de donnes. Pour obtenir la premire connexion, passez la valeur
NULL ; pour obtenir la connexion suivante, passez la valeur renvoye par
linstruction prcdente. La fonction renvoie la valeur NULL lorsquil ny a
plus de connexions. Les ID de connexion ne sont pas renvoys dans un ordre
particulier. Toutefois, vous pouvez connatre lordre dans lequel les
connexions au serveur ont t tablies partir de lID de connexion. La
valeur 1 est affecte la premire connexion un serveur. Pour les
connexions suivantes, les ID de connexion sont augments par
incrmentation de 1.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Exemple Linstruction suivante renvoie un identificateur pour la premire connexion
de la base courante. Il sagit dun entier (10, par exemple).
SELECT NEXT_CONNECTION( NULL )

Linstruction suivante renvoie une valeur (5, par exemple).


SELECT NEXT_CONNECTION( 10 )

Lappel suivant renvoie la connexion qui se trouve aprs lid_connexion


pour la base courante :
NEXT_CONNECTION( connection-id )

Lappel suivant renvoie la connexion qui se trouve aprs lid_connexion,


quelle que soit la base de donnes :
NEXT_CONNECTION( connection-id, NULL )

Lappel suivant renvoie la connexion qui se trouve aprs lid_connexion


pour la base spcifie :
NEXT_CONNECTION( connection-id, database-id )

Linstruction suivante renvoie la premire connexion, quelle que soit la base


de donnes :
NEXT_CONNECTION(NULL, NULL)

192
Chapitre 3. Fonctions SQL

Lappel suivant renvoie la premire connexion pour la base de donnes


spcifie :
NEXT_CONNECTION( NULL, database-id )

NEXT_DATABASE (fonction systme)


Fonction Renvoie un numro identifiant une base de donnes.
Syntaxe NEXT_DATABASE ( { NULL | id_basededonnes } )

Paramtres id_basededonnes Entier correspondant lID de la base de donnes.


Utilisation Vous pouvez utiliser NEXT_DATABASE pour rpertorier les bases de
donnes actives sur un serveur. Pour obtenir la premire base de donnes,
passez la valeur NULL ; pour obtenir la base de donnes suivante, passez la
valeur renvoye par linstruction prcdente. La fonction renvoie la valeur
NULL lorsquil ny a plus de bases de donnes. Les numros dID de base
de donnes ne sont pas renvoys dans un ordre particulier. Toutefois, vous
pouvez connatre lordre dans lequel les connexions au serveur ont t
tablies partir de lID de base de donnes. La valeur 0 est affecte la
premire base de donnes se connectant au serveur. Pour les connexions
suivantes, les ID de base de donnes sont augments par incrmentation de 1.
Normes et compatibilit SQL/92 Extension de Transact-SQL.
SQL/99 Extension de Transact-SQL.

Sybase Non prise en charge par Adaptive Server Enterprise.

Exemple Linstruction suivante renvoie la valeur 0, la premire valeur de base de


donnes.
SELECT NEXT_DATABASE( NULL )

Linstruction suivante renvoie la valeur NULL, indiquant quil ny a pas


dautres bases de donnes sur le serveur.
SELECT NEXT_DATABASE( 0 )

NEXT_HTTP_HEADER (fonction HTTP)


Fonction Extrait le nom den-tte HTTP suivant.
Syntaxe NEXT_HTTP_HEADER (nom_entte)

Paramtres nom_entte Nom de len-tte prcdent. Si le nom den-tte est NULL,


cette fonction renvoie le nom du premier en-tte HTTP.

193
Utilisation Cette fonction effectue une itration sur les en-ttes HTTP inclus dans une
demande. Si elle est appele avec la valeur NULL, elle renvoie le nom du
premier en-tte. Les en-ttes suivants sont extraits en transmettant la
fonction le nom de len-tte prcdent. Cette fonction renvoie la valeur
NULL lorsquelle est appele avec le nom du dernier en-tte.
Un appel rpt cette fonction renvoie tous les champs den-tte
exactement une fois, mais pas ncessairement dans leur ordre dapparition
dans la demande HTTP.
Voir aussi HTTP_HEADER (fonction HTTP) la page 172
HTTP_VARIABLE (fonction HTTP) la page 172
NEXT_HTTP_VARIABLE (fonction HTTP) la page 194

NEXT_HTTP_VARIABLE (fonction HTTP)


Fonction Extrait le nom de variable HTTP suivant.
Syntaxe NEXT_HTTP_VARIABLE (nom_var )

Paramtres nom_var Nom de la variable prcdente. Si le nom de variable est NULL,


cette fonction renvoie le nom de la premire variable HTTP.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Utilisation Cette fonction effectue une itration sur les variables HTTP incluses dans
une demande. Si elle est appele avec la valeur NULL, elle renvoie le nom
de la premire variable. Les variables suivantes sont extraites en transmettant
la fonction le nom de la variable prcdente. Cette fonction renvoie la
valeur NULL lorsquelle est appele avec le nom de la variable finale.
Un appel rpt cette fonction renvoie toutes les variables exactement une
fois, mais pas ncessairement dans leur ordre dapparition dans la demande
HTTP. Les variables url ou url1, url2, . . ., url10 sont incluses si URL PATH
est dfini ON ou ELEMENTS, respectivement.
Voir aussi HTTP_HEADER (fonction HTTP) la page 172
HTTP_VARIABLE (fonction HTTP) la page 172
NEXT_HTTP_HEADER (fonction HTTP) la page 193

NOW (fonction de date et dheure)


Fonction Renvoie lanne, le mois, le jour, lheure, les minutes, les secondes et les
fractions de seconde. La fraction dune seconde. La prcision de lheure est
limite par la prcision de lhorloge systme.

194
Chapitre 3. Fonctions SQL

Les informations renvoyes par la fonction NOW sont quivalentes aux


informations renvoyes par la fonction GETDATE et la valeur spciale
CURRENT TIMESTAMP.
Syntaxe NOW ( * )

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi GETDATE (fonction de date et dheure) la page 162
Valeur spciale CURRENT TIMESTAMP la page 36
Exemple Linstruction suivante renvoie la date et lheure courantes :
SELECT NOW(*)

NULLIF (fonction diverse)


Fonction Fournit une expression CASE abrge en comparant les expressions.
Syntaxe NULLIF ( expression_1, expression_2 )

Paramtres expression_1 Expression comparer.


expression_2 Expression comparer.
Utilisation NULLIF compare les valeurs des deux expressions.
Si elles sont identiques, la fonction NULLIF renvoie la valeur NULL.
Si la premire expression est diffrente de la seconde, ou si la seconde
expression est NULL, NULLIF renvoie la premire expression.
NULLIF permet dcrire les expressions CASE sous une forme abrge.
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.
SQL/99 Fonction principale.

Sybase Compatible avec Adaptive Server Enterprise.


Voir aussi Expressions CASE la page 20
Exemple Linstruction suivante renvoie la valeur a :
SELECT NULLIF( a, b )

Linstruction suivante renvoie NULL :


SELECT NULLIF( a, a )

195
NUMBER (fonction diverse)
Fonction Gnre des nombres, en commenant par 1, pour chaque ligne successive du
rsultat de la requte. La fonction NUMBER est exclusivement rserve aux
listes de slection.
Syntaxe NUMBER ( * )

Utilisation Vous pouvez utiliser la fonction NUMBER(*) dans une liste de slection
pour numroter les lignes du jeu de rsultats de faon squentielle.
NUMBER(*) renvoie la valeur du numro de ligne ANSI de chaque ligne du
jeu de rsultats. Cela signifie que la fonction NUMBER peut renvoyer des
valeurs positives ou ngatives, selon la faon dont lapplication fait dfiler le
jeu de rsultats. Pour les curseurs insensibles, la valeur de NUMBER(*) est
toujours positive, puisque le jeu de rsultats est entirement matrialis lors
de lexcution de linstruction OPEN.
Dautre part, pour certains types de curseur, il est possible que le numro de
ligne soit modifi. En revanche, pour les curseurs insensibles et avec
dfilement, la valeur est fixe. Pour les curseurs dynamiques et sensibles, la
valeur peut tre modifie en cas de mises jour simultanes.
Si vous utilisez la fonction NUMBER dans une instruction DELETE, une
clause WHERE, HAVING, ORDER BY, GROUP BY ou DISTINCT, une
sous-requte, une requte impliquant un agrgat, une contrainte, une requte
contenant UNION ALL ou une table sous-jacente, une erreur de syntaxe est
gnre.
La fonction NUMBER(*) peut tre utilise dans une vue (selon les
conditions dfinies plus haut), mais la colonne de la vue qui correspond
lexpression impliquant NUMBER(*) ne peut pas tre rfrence plus dune
fois dans la requte ou la vue externe. Dautre part, la vue ne peut pas faire
partie dune jointure externe gauche ou complte en tant que table
fournissant des valeurs NULL.
Dans Embedded SQL, soyez prudent lorsque vous utilisez un curseur faisant
rfrence une requte contenant une fonction NUMBER(*). Cette fonction
renvoie notamment des nombres ngatifs lorsque la position du curseur de la
base de donnes est relative celle de la fin du curseur (position absolue
avec un offset ngatif).
Vous pouvez utiliser NUMBER dans la partie droite dune affectation de la
clause SET dune instruction UPDATE. Par exemple : SET x =
NUMBER(*).

Cette fonction permet galement de gnrer des cls primaires lors de

196
Chapitre 3. Fonctions SQL

lutilisation dINSERT dans une instruction SELECT (reportez-vous la


section Instruction INSERT la page 551), mme sil est conseill
dutiliser la colonne AUTOINCREMENT pour gnrer des cls primaires
squentielles.
Pour plus dinformations sur AUTOINCREMENT, reportez-vous la
section Instruction CREATE TABLE la page 425.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Changements de comportement
Le comportement de la fonction NUMBER a chang dans la version 8.
Pour plus dinformations, reportez-vous la section Changements de
comportement dAdaptive Server Anywhere [Nouvelles fonctionnalits
de SQL Anywhere Studio, page 179].

Sybase Non prise en charge par Adaptive Server Enterprise.


Exemple Linstruction suivante renvoie une liste de dpartements numrots de faon
squentielle :
SELECT NUMBER( * ), dept_name
FROM department
WHERE dept_id > 5
ORDER BY dept_name

OPENXML (fonction de chane de caractres)


Fonction Gnre un jeu de rsultats partir dun document XML.
Syntaxe OPENXML ( expression_xml,
requte_xpath [, indicateurs [, dclaration_namespace ] ] )
WITH ( nom_colonne type_colonne [ requte_xpath ],... )

Paramtres expression_xml Code XML sur lequel repose le jeu de rsultats. Il peut
sagir dune expression chane, comme une constante, une variable ou une
colonne.
requte_xpath Chane contenant une requte XPath. XPath permet de
dfinir des modles qui dcrivent la structure du document XML que vous
interrogez. Le modle XPath inclus dans cet argument slectionne les noeuds
partir du document XML. Chaque noeud qui correspond la requte
XPath dans le second argument requte_xpath cre une ligne dans la table.
Il est possible de dfinir des mtaproprits seulement dans les arguments
requte_xpath de la clause WITH. Laccs une mtaproprit se fait dans
une requte XPath comme sil sagissait dun attribut. Si aucune

197
dclaration_namespace nest dfinie, par dfaut le prfixe mp est li lURI
(Uniform Resource Identifier) urn:ianywhere-com:asa-xpath-metaprop.
Si une dclaration_namespace est dfinie, cet URI doit tre li mp ou un
autre prfixe pour permettre laccs aux mtaproprits de la requte.
OPENXML prend en charge les mtaproprits suivantes :
@mp:id renvoie lID dun noeud unique dans le document XML. LID
dun noeud donn dans un document donn peut changer en cas de
redmarrage du serveur de base de donnes. La valeur de cette
mtaproprit augmente selon lordre du document.
@mp:localname renvoie la partie locale du nom du noeud, ou la valeur
NULL si le noeud ne porte pas de nom.
@mp:prefix renvoie le prfixe du nom du noeud, ou la valeur NULL si
le noeud ne porte pas de nom ou si son nom na pas de prfixe.
@mp:namespaceuri renvoie lURI du namespace auquel appartient le
noeud, ou la valeur NULL si le noeud ne se trouve pas dans un
namespace.

@mp:xmltext renvoie une sous-arborescence du document XML sous


forme XML. Par exemple, lorsquil y a correspondance avec un noeud
interne, vous pouvez utiliser cette mtaproprit pour renvoyer une chane
XML, au lieu des valeurs concatnes des noeuds de texte descendants.
indicateurs Indique le mappage qui doit tre utilis entre les donnes
XML et le jeu de rsultats lorsquaucune requte XPath nest dfinie dans la
clause WITH. Si le paramtre indicateurs nest pas prcis, le comportement
par dfaut consiste mapper les attributs aux colonnes du jeu de rsultats.
Le paramtre indicateurs peut avoir lune des valeurs suivantes :

Valeur Description

1 Les attributs XML sont mapps aux colonnes du jeu de


rsultats (option par dfaut).

2 Les lments XML sont mapps aux colonnes du jeu de


rsultats.
dclaration_namespace Un document XML. Les namespaces dans la
porte pour la requte sont tirs de llment racine du document. Si des
namespaces sont indiqus, vous devez inclure un argument indicateurs,
mme si tous les arguments requte_xpath sont indiqus.
Clause WITH Indique le schma du jeu de rsultats et comment la valeur
est trouve pour chaque colonne dans le jeu de rsultats. Les arguments
requte_xpath de la clause WITH sont recherchs par rapport aux

198
Chapitre 3. Fonctions SQL

correspondances obtenues pour la requte_xpath dans le second argument.


Si une expression de la clause WITH correspond plusieurs noeuds, seul le
premier dans lordre du document est utilis. Sil ne sagit pas dun noeud
texte, le rsultat est obtenu en ajoutant tous les descencants de noeud texte.
Si une expression de la clause WITH ne correspond aucun noeud, la
colonne de cette ligne prend la valeur NULL.
La syntaxe de la clause OPENXML WITH est identique celle qui permet
de slectionner dans une procdure stocke.
Pour plus dinformations sur la slection dans une procdure stocke,
reportez-vous la section Clause FROM la page 511.
nom_colonne Nom de la colonne dans le jeu de rsultats.
type_colonne Type de donnes de la colonne dans le jeu de rsultats. Le
type de donnes doit tre compatible avec les valeurs slectionnes dans le
document XML.
Pour obtenir la liste des types de donnes, reportez-vous la section
Types de donnes SQL la page 55.
Utilisation OPENXML analyse lexpression_xml et prsente le rsultat sous forme
darborescence. Cette arborescence contient un noeud distinct pour chaque
lment, attribut et noeud de texte, ou toute autre structure XML. Les
requtes XPath fournies OPENXML sont utilises pour slectionner des
noeuds dans larborescence, puis les noeuds slectionns sont mapps au jeu
de rsultats.
Lanalyseur XML utilis par OPENXML neffectue pas de validation et ne
lit pas le sous-ensemble DTD externe, ni les entits de paramtre externes.
Lorsquil existe plusieurs correspondances pour une expression de colonne,
cest la premire correspondance dans lordre du document (celui du
document XML dorigine, avant son analyse) qui est utilise. La valeur
NULL est renvoye si aucun noeud ne correspond. Lorsquun noeud interne
est slectionn, le rsultat comprend tous les noeuds texte descendants
concatns.
Les colonnes de type BINARY, LONG BINARY, IMAGE et VARBINARY
sont supposes tre codes au format base64 et sont dcodes
automatiquement. Si vous gnrez du code XML laide de la clause FOR
XML, ces types sont cods au format base64 et peuvent tre dcods laide
dOPENXML.
Pour plus dinformations sur lutilisation de la clause FOR XML,
reportez-vous la section FOR XML et donnes binaires [ASA - Guide de
lutilisateur SQL, page 566].

199
OPENXML prend en charge un sous-ensemble de la syntaxe XPath, comme
suit :
Les axes child, self, attribute, descendant, descendant-or-self et parent
sont entirement pris en charge.
Pour en obtenir la description, reportez-vous la section Utilisation
dexpressions XPath [ASA - Guide de lutilisateur SQL, page 557].
Une syntaxe abrge et non abrge peut tre utilise pour toutes les
fonctions prises en charge. Par exemple, a quivaut child::a et
.. parent::node().

Les tests de nom peuvent utiliser des caractres gnriques. Par exemple,
a/*/b.

Les tests Kind suivants sont pris en charge : node(), text(),


processing-instruction() et comment().
Des qualificateurs de la forme expr1 [expr2 ] et expr1 [expr2 ="chane "]
peuvent tre utiliss, o expr2 reprsente chaque expression XPath prise
en charge. Un qualificatif prend la valeur TRUE si expr2 correspond un
ou plusieurs noeuds. Par exemple, a[b] trouve les noeuds a qui ont au
moins un enfant b et a[b="i"] trouve les noeuds a qui ont au moins un
enfant b avec une valeur de texte i.
Pour plus dinformations sur le langage de requte XPath, reportez-vous
au site http://www.w3.org/TR/xpath .
Normes et compatibilit Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi Importation de donnes XML laide dOPENXML [ASA - Guide de
lutilisateur SQL, page 557]
Exemple La requte suivante gnre un jeu de rsultats partir du document XML
fourni comme premier argument dOPENXML :
SELECT * FROM OPENXML( <products>
<prod_type id="301">Tee Shirt</prod_type>
<prod_type id="401">Baseball Cap</prod_type>
</products>,
/products/prod_type )
WITH ( prod_name LONG VARCHAR text(), prod_id CHAR(3) @id)

Cette requte gnre le rsultat suivant :

prod_name prod_id

Tee Shirt 301


Baseball Cap 401

200
Chapitre 3. Fonctions SQL

La requte qui suit utilise un prdicat dgalit pour gnrer un jeu de


rsultats partir du document XML fourni.
SELECT * FROM OPENXML (<emp_directory>
<employee>
<column name="emp_id">105</column>
<column name="emp_fname">Matthew</column>
<column name="emp_lname">Cobb</column>
<column name="street">7 Pleasant Street</column>
<column name="city">Grimsby</column>
<column name="state">UT</column>
<column name="zip_code">02154</column>
<column name="phone">6175553840</column>
</employee>
<employee>
<column name="emp_id">148</column>
<column name="emp_fname">Julie</column>
<column name="emp_lname">Jordan</column>
<column name="street">1244 Great Plain Avenue</column>
<column name="city">Woodbridge</column>
<column name="state">AZ</column>
<column name="zip_code">01890</column>
<column name="phone">6175557835</column>
</employee>
<employee>
<column name="emp_id">160</column>
<column name="emp_fname">Robert</column>
<column name="emp_lname">Breault</column>
<column name="street">358 Cherry Street</column>
<column name="city">Milton</column>
<column name="state">PA</column>
<column name="zip_code">02186</column>
<column name="phone">6175553099</column>
</employee>
<employee>
<column name="emp_id">243</column>
<column name="emp_fname">Natasha</column>
<column name="emp_lname">Shishov</column>
<column name="street">151 Milk Street</column>
<column name="city">Grimsby</column>
<column name="state">UT</column>
<column name="zip_code">02154</column>
<column name="phone">6175552755</column>
</employee>
</emp_directory>, /emp_directory/employee)
WITH ( emp_id INT column[@name="emp_id"],
first_name CHAR(20) column[@name="emp_
fname"],
last_name CHAR(20) column[@name="emp_
lname"],
phone_number CHAR(10) column[@name="phone"])

Cette requte gnre le jeu de rsultats suivant :

201
emp_id first_name last_name phone_number

105 Matthew Cobb 6175553840

148 Julie Jordan 6175557835

160 Robert Breault 6175553099

243 Natasha Shishov 6175552755


Pour plus dexemples dutilisation dOPENXML, reportez-vous la
section Importation de donnes XML laide dOPENXML [ASA - Guide
de lutilisateur SQL, page 557].

PATINDEX (fonction de chane de caractres)


Fonction Renvoie un entier dsignant la position de dbut de la premire occurrence
dun masque dans une chane.
Syntaxe PATINDEX ( %masque%, expression_chane )

Paramtres masque Masque rechercher. Si vous omettez le caractre joker % en tte,


la fonction PATINDEX renvoie la valeur un (1) si le masque apparat en
dbut de chane et la valeur zro (0) dans le cas contraire.
Le masque utilise les mmes caractres joker que la comparaison LIKE. Ces
caractres sont les suivants :

Caractre joker Correspondance

_ (tiret bas) Un caractre quelconque

% (pourcentage) Toute chane constitue de zro, un ou plusieurs caractres


[] Tout caractre unique appartenant lintervalle ou
lensemble spcifi
[^] Tout caractre unique nappartenant pas lintervalle ou
lensemble spcifi
expression_chane Chane dans laquelle le masque doit tre recherch.
Utilisation PATINDEX renvoie la position de dbut de la premire occurrence du
masque. Si le masque nest pas trouv, elle renvoie zro (0).
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise, si ce nest que la
clause USING nest pas prise en charge.

202
Chapitre 3. Fonctions SQL

Voir aussi Condition LIKE la page 26


LOCATE (fonction de chane de caractres) la page 182
Exemple Linstruction suivante renvoie le rsultat 2 :
SELECT PATINDEX( %hoco%, chocolate )

Linstruction suivante renvoie le rsultat 11 :


SELECT PATINDEX (%4_5_, 0a1A 2a3A 4a5A)

PERCENT_RANK (fonction dagrgat)


Fonction Calcule la position (fraction) dune ligne renvoye partir dune requte par
rapport aux autres lignes renvoyes par la requte, comme dfini par la
clause ORDER BY. Cette fonction renvoie une valeur dcimale comprise
entre 0 et 1.
Syntaxe PERCENT_RANK ( )

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Fonctionnalit SQL/OLAP T611
Sybase Non prise en charge par Adaptive Server Enterprise.

Voir aussi CUME_DIST (fonction dagrgat) la page 133


DENSE_RANK (fonction dagrgat) la page 147
RANK (fonction dagrgat) la page 209
ROW_NUMBER (fonction dagrgat) la page 224
Exemple Dans lexemple qui suit, un jeu de rsultats montrant le classement des
salaires des employs de New York par sexe est renvoy. Les rsultats sont
classs dans lordre dcroissant sous forme de pourcentage dcimal et
partitionns par sexe.
SELECT dept_id, emp_lname, salary, sex,
PERCENT_RANK () OVER (PARTITION BY sex
ORDER BY salary DESC) "Rank"
FROM employee
WHERE state IN (NY)

dept_id emp_lname salary sex Rank

200 Martel 55700.000 M 0

100 Guevara 42998.000 M 0.333333333

100 Soo 39075.000 M 0.666666667

203
dept_id emp_lname salary sex Rank

400 Ahmed 34992.000 M 1

300 Davidson 57090.000 F 0

400 Blaikie 54900.000 F 0.333333333

100 Whitney 45700.000 F 0.666666667


400 Wetherby 35745.000 F 1

PI (fonction numrique)
Fonction Renvoie la valeur numrique PI.
Syntaxe PI ( * )

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.

Sybase La fonction PI() est prise en charge par Adaptive Server


Enterprise, contrairement PI(*).
Exemple Linstruction suivante renvoie le rsultat 3.141592653. . . :
SELECT PI( * )

PLAN (fonction diverse)


Fonction Renvoie la stratgie doptimisation de plans longs dune instruction SQL
sous forme de chane.
Syntaxe PLAN ( expression_chane, [ type_curseur ], [ tat_mise__jour ] )

Paramtres expression_chane Instruction SQL qui est le plus souvent une


instruction SELECT, mais qui peut aussi tre UPDATE ou DELETE.
type_curseur Chane. Cursor-type peut tre asensitive (par dfaut),
insensitive, sensitive ou keyset-driven.
tat_mise__jour Paramtre de chane qui accepte lune des valeurs
suivantes indiquant comment loptimiseur doit traiter le curseur donn :

204
Chapitre 3. Fonctions SQL

Valeur Description

READ-ONLY Le curseur est en mode lecture seule.

READ-WRITE Le curseur peut tre en mode lecture ou criture.


(par dfaut)

FOR UPDATE Le curseur peut tre en mode lecture ou criture. Cette


valeur a exactement le mme effet que READ-WRITE.
Normes et compatibilit SQL/92 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi EXPLANATION (fonction diverse) la page 159
GRAPHICAL_PLAN (fonction diverse) la page 163
GRAPHICAL_ULPLAN (fonction diverse) la page 164
LONG_ULPLAN (fonction diverse) la page 184
SHORT_ULPLAN (fonction diverse) la page 227
Exemple Linstruction suivante transmet une instruction SELECT sous forme de
paramtre de chane et renvoie le plan pour excuter la requte.
SELECT PLAN(
SELECT * FROM department WHERE dept_id > 100 )

Ces informations sont utiles lorsque vous devez dcider de lajout dindex
ou pour dterminer la structure la plus adapte votre base de donnes en
vue damliorer les performances.
Linstruction suivante renvoie une chane contenant le plan textuel pour un
curseur INSENSITIVE sur la requte select * from department
where ....
SELECT PLAN(
SELECT * FROM department WHERE dept_id > 100,
insensitive,
read-only )

Dans Interactive SQL, vous pouvez visualiser le plan renvoy par nimporte
quelle instruction SQL dans longlet Plan du volet Rsultats.

POWER (fonction numrique)


Fonction Calcule un nombre lev une puissance.
Syntaxe POWER ( expression_numrique1, expression_numrique2 )

Paramtres expression_numrique1 Base.


expression_numrique2 Exposant.

205
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Compatible avec Adaptive Server Enterprise.

Exemple Linstruction suivante renvoie le rsultat 64 :


SELECT Power( 2, 6 )

PROPERTY_DESCRIPTION (fonction systme)


Fonction Renvoie la description dune proprit.
Syntaxe PROPERTY_DESCRIPTION ( { id_proprit | nom_proprit } )

Paramtres id_proprit Entier correspondant au numro de la proprit de base de


donnes. Vous pouvez dterminer ce numro laide de la fonction
PROPERTY_NUMBER. Lid_proprit est en gnral utilis dans des
boucles sur un ensemble de proprits.
nom_proprit Chane indiquant le nom de la proprit de base de
donnes.
Utilisation Bien que chaque proprit possde un numro et un nom, il convient de ne
pas utiliser le numro en tant quidentificateur dune proprit donne car il
varie dune version une autre.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi Proprits de connexion et de performances de la base de donnes [ASA
- Guide dadministration, page 765]

Exemple Linstruction suivante renvoie la description Number of index insertions :


SELECT PROPERTY_DESCRIPTION( IndAdd )

PROPERTY (fonction systme)


Fonction Renvoie, sous forme de chane, la valeur de la proprit de niveau serveur
spcifie.
Syntaxe PROPERTY ( { id_proprit | nom_proprit } )

Paramtres id_proprit Entier correspondant au numro de la proprit de niveau


serveur. Vous pouvez dterminer ce numro laide de la fonction

206
Chapitre 3. Fonctions SQL

PROPERTY_NUMBER. Lid_proprit est en gnral utilis dans des


boucles sur un ensemble de proprits.
nom_proprit Chane indiquant le nom de la proprit de base de
donnes.
Utilisation Bien que chaque proprit possde un numro et un nom, il convient de ne
pas utiliser le numro en tant quidentificateur dune proprit donne car il
varie dune version une autre.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi Proprits de niveau serveur [ASA - Guide dadministration, page 788]
Exemple Linstruction suivante renvoie le nom du serveur de base de donnes
courant :
SELECT PROPERTY( Name )

PROPERTY_NAME (fonction systme)


Fonction Renvoie le nom de la proprit qui porte le numro de proprit indiqu.
Syntaxe PROPERTY_NAME ( id_proprit )

Paramtres id_proprit Numro de la proprit de base de donnes.


Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi Proprits des bases de donnes [ASA - Guide dadministration, page 775]
Exemple Linstruction suivante renvoie la proprit associe au numro 126. La
proprit relle laquelle ce numro fait rfrence change dune version
lautre.
SELECT PROPERTY_NAME( 126 )

PROPERTY_NUMBER (fonction systme)


Fonction Renvoie le numro de la proprit qui porte le nom indiqu.
Syntaxe PROPERTY_NUMBER ( nom_proprit )

207
Paramtres nom_proprit Nom dune proprit.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi Proprits des bases de donnes [ASA - Guide dadministration, page 775]
Exemple Linstruction suivante renvoie un entier. La valeur relle change dune
version lautre.
SELECT PROPERTY_NUMBER( PAGESIZE )

QUARTER (fonction de date et dheure)


Fonction Renvoie un nombre indiquant le trimestre de lanne dans la date indique.
Syntaxe QUARTER ( expression_date )

Paramtres expression_date Date.


Utilisation Les trimestres sont les suivants :

Trimestre Priode (inclusive)

1 1er janvier au 31 mars

2 1er avril au 30 juin


3 1er juillet au 30 septembre

4 1er octobre au 31 dcembre


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Linstruction suivante renvoie le rsultat 2 :
SELECT QUARTER ( 1987/05/02 )

RADIANS (fonction numrique)


Fonction Convertit en radians un nombre exprim en degrs.
Syntaxe RADIANS ( expression_numrique )

Paramtres expression_numrique Nombre en degrs. Cet angle est converti en


radians.

208
Chapitre 3. Fonctions SQL

Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Compatible avec Adaptive Server Enterprise.

Exemple Linstruction suivante renvoie une valeur denviron 0,5236 :


SELECT RADIANS( 30 )

RAND (fonction numrique)


Fonction Renvoie un nombre alatoire compris entre 0 et 1, avec expression_entier
comme valeur de dpart facultative.
Syntaxe RAND ( [expression_entier ] )

Paramtres expression_entier Valeur de dpart facultative utilise pour crer un


nombre alatoire. Cet argument permet de crer des squences de nombres
alatoires rptables.
Utilisation RAND est une fonction non dterministe. Des appels successifs RAND
peuvent renvoyer des valeurs diffrentes. Loptimiseur de requtes ne met
pas en mmoire cache les rsultats de la fonction RAND.
Pour plus dinformations sur les fonctions non dterministes,
reportez-vous la section Mise en mmoire cache des fonctions [ASA -
Guide de lutilisateur SQL, page 485].

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.

Exemple Linstruction suivante renvoie une valeur denviron 0,0554504 :


SELECT RAND( 4 )

RANK (fonction dagrgat)


Fonction Calcule la valeur dun rang au sein dun groupe de valeurs. Dans le cas de
valeurs galit, la fonction RANK laisse un vide dans la squence de
classement.
Syntaxe RANK ( )

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Fonctionnalit SQL/OLAP T611

209
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi CUME_DIST (fonction dagrgat) la page 133
DENSE_RANK (fonction dagrgat) la page 147
PERCENT_RANK (fonction dagrgat) la page 203
ROW_NUMBER (fonction dagrgat) la page 224
Exemple Lexemple qui suit renvoie un jeu de rsultats donnant le classement, dans
lordre dcroissant, du salaire des employs travaillant dans lUtah et dans
lEtat de New York. Notez que les 7me et 8me employs ont le mme
salaire et partagent donc le 7me rang. Lemploy qui vient aprs se voit
attribuer le 9me rang, ce qui laisse un vide dans la squence de classement
(pas de 8me rang).
SELECT emp_lname, salary, state,
RANK () OVER (ORDER BY salary DESC) "Rank"
FROM employee WHERE state IN (NY,UT)

emp_lname salary state Rank

Shishov 72995.000 UT 1

Wang 68400.000 UT 2

Cobb 62000.000 UT 3
Morris 61300.000 UT 4

Davidson 57090.000 NY 5

Martel 55700.000 NY 6

Blaikie 54900.000 NY 7

Diaz 54900.000 NY 7
Driscoll 48023.690 UT 9

Hildebrand 45829.000 UT 10

Whitney 45700.000 NY 11

... ... ... ...


Lynch 24903.000 UT 19

REGR_AVGX (fonction dagrgat)


Fonction Calcule la moyenne de la variable indpendante de la droite de rgression.
Syntaxe REGR_AVGX ( expression_dpendante, expression_indpendante )

210
Chapitre 3. Fonctions SQL

Paramtres expression_dpendante Variable concerne par la variable indpendante.


expression_indpendante Variable qui influence le rsultat.
Utilisation La fonction renvoie une valeur numrique. Si la fonction est applique un
jeu vide, elle renvoie une valeur NULL.
Cette fonction sapplique au jeu de paires (expression_dpendante,
expression_indpendante ) aprs limination de toutes les paires dans
lesquelles expression_dpendante ou expression_indpendante a la valeur
NULL. Cette fonction est calcule simultanment au cours dune seule
transmission des donnes. Aprs limination des valeurs nulles, le calcul
suivant est ralis :
AVG ( y )
o y reprsente lexpression_indpendante.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Fonction principale/SQL extrieure au langage SQL basique.
Sybase Non prise en charge par Adaptive Server Enterprise.

Voir aussi AVG (fonction dagrgat) la page 113


REGR_COUNT (fonction dagrgat) la page 212
REGR_INTERCEPT (fonction dagrgat) la page 213
REGR_COUNT (fonction dagrgat) la page 212
REGR_SLOPE (fonction dagrgat) la page 215
REGR_SXX (fonction dagrgat) la page 216
REGR_SXY (fonction dagrgat) la page 217
REGR_SYY (fonction dagrgat) la page 217
REGR_AVGY (fonction dagrgat) la page 211
Exemple Dans lexemple qui suit, la moyenne de la variable dpendante (ge de
lemploy) est calcule. Cette fonction renvoie la valeur 45.44.
SELECT REGR_AVGX (salary, (year(now()) - year(birth_date)))
FROM employee

REGR_AVGY (fonction dagrgat)


Fonction Calcule la moyenne de la variable dpendante de la droite de rgression.
Syntaxe REGR_AVGY ( expression_dpendante, expression_indpendante )

Paramtres expression_dpendante Variable concerne par la variable indpendante.


expression_indpendante Variable qui influence le rsultat.

211
Utilisation La fonction renvoie une valeur numrique. Si la fonction est applique un
jeu vide, elle renvoie une valeur NULL.
Cette fonction sapplique au jeu de paires (expression_dpendante,
expression_indpendante ) aprs limination de toutes les paires dans
lesquelles expression_dpendante ou expression_indpendante a la valeur
NULL. Cette fonction est calcule simultanment au cours dune seule
transmission des donnes. Aprs limination des valeurs nulles, le calcul
suivant est ralis :
AVG ( x )
o x reprsente lexpression-dpendante.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Fonction principale/SQL extrieure au langage SQL basique.
Sybase Non prise en charge par Adaptive Server Enterprise.

Voir aussi REGR_COUNT (fonction dagrgat) la page 212


REGR_INTERCEPT (fonction dagrgat) la page 213
REGR_COUNT (fonction dagrgat) la page 212
REGR_SLOPE (fonction dagrgat) la page 215
REGR_SXX (fonction dagrgat) la page 216
REGR_SXY (fonction dagrgat) la page 217
REGR_SYY (fonction dagrgat) la page 217
REGR_AVGX (fonction dagrgat) la page 210
AVG (fonction dagrgat) la page 113
Exemple Dans lexemple qui suit, la moyenne de la variable indpendante (salaire de
lemploy) est calcule. Cette fonction renvoie la valeur 49988.6232.
SELECT REGR_AVGY (salary, (year(now()) - year(birth_date)))
FROM employee

REGR_COUNT (fonction dagrgat)


Fonction Renvoie un entier qui reprsente le nombre de paires de nombres non nulles
utilises pour ajuster la droite de rgression.
Syntaxe REGR_COUNT ( expression_dpendante, expression_indpendante )

Paramtres expression_dpendante Variable concerne par la variable indpendante.


expression_indpendante Variable qui influence le rsultat.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Fonction principale/SQL extrieure au langage SQL basique.

212
Chapitre 3. Fonctions SQL

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi REGR_INTERCEPT (fonction dagrgat) la page 213
REGR_COUNT (fonction dagrgat) la page 212
REGR_SLOPE (fonction dagrgat) la page 215
REGR_SXX (fonction dagrgat) la page 216
REGR_SXY (fonction dagrgat) la page 217
REGR_SYY (fonction dagrgat) la page 217
REGR_AVGY (fonction dagrgat) la page 211
REGR_AVGX (fonction dagrgat) la page 210
COUNT (fonction dagrgat) la page 129
AVG (fonction dagrgat) la page 113
SUM (fonction dagrgat) la page 241
Exemple Dans lexemple qui suit, une valeur indiquant le nombre de paires non nulles
utilises pour dterminer la droite de rgression est renvoye. Cette fonction
renvoie la valeur 75.
SELECT REGR_COUNT (salary, (year(now()) - year(birth_date)))
FROM employee

REGR_INTERCEPT (fonction dagrgat)


Fonction Calcule le segment sur laxe y de la droite de rgression.
Syntaxe REGR_INTERCEPT ( expression_dpendante, expression_indpendante )

Paramtres expression_dpendante Variable concerne par la variable indpendante.


expression_indpendante Variable qui influence le rsultat.
Utilisation La fonction renvoie une valeur numrique. Si la fonction est applique un
jeu vide, elle renvoie une valeur NULL.
Cette fonction sapplique au jeu de paires (expression_dpendante,
expression_indpendante ) aprs limination de toutes les paires dans
lesquelles expression_dpendante ou expression_indpendante a la valeur
NULL. Cette fonction est calcule simultanment au cours dune seule
transmission des donnes. Aprs limination des valeurs nulles, le calcul
suivant est ralis :
AVG ( x ) - REGR_SLOPE ( x, y ) * AVG ( y )
o x reprsente lexpression_dpendante et y lexpression_indpendante.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Fonction principale/SQL extrieure au langage SQL basique.
Sybase Non prise en charge par Adaptive Server Enterprise.

213
Voir aussi REGR_COUNT (fonction dagrgat) la page 212
REGR_COUNT (fonction dagrgat) la page 212
REGR_SLOPE (fonction dagrgat) la page 215
REGR_SXX (fonction dagrgat) la page 216
REGR_SXY (fonction dagrgat) la page 217
REGR_SYY (fonction dagrgat) la page 217
REGR_AVGY (fonction dagrgat) la page 211
REGR_AVGX (fonction dagrgat) la page 210
REGR_SLOPE (fonction dagrgat) la page 215
AVG (fonction dagrgat) la page 113
Exemple Lexemple suivant renvoie la valeur 7.486.6384185191855.
SELECT REGR_INTERCEPT (salary, (year(now()) - year(birth_date)))
FROM employee

REGR_R2 (fonction dagrgat)


Fonction Calcule le coefficient de dtermination (galement appel R au carr ou
qualit de lajustement ) de la droite de rgression.
Syntaxe REGR_R2 ( expression_dpendante, expression_indpendante )

Paramtres expression_dpendante Variable concerne par la variable indpendante.


expression_indpendante Variable qui influence le rsultat.
Utilisation La fonction renvoie une valeur numrique. Si la fonction est applique un
jeu vide, elle renvoie une valeur NULL.
Cette fonction sapplique au jeu de paires (expression_dpendante,
expression_indpendante ) aprs limination de toutes les paires dans
lesquelles expression_dpendante ou expression_indpendante a la valeur
NULL.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Fonction principale/SQL extrieure au langage SQL basique.


Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi REGR_COUNT (fonction dagrgat) la page 212
REGR_INTERCEPT (fonction dagrgat) la page 213
REGR_SLOPE (fonction dagrgat) la page 215
REGR_SXX (fonction dagrgat) la page 216
REGR_SXY (fonction dagrgat) la page 217
REGR_SYY (fonction dagrgat) la page 217
REGR_AVGX (fonction dagrgat) la page 210

214
Chapitre 3. Fonctions SQL

REGR_AVGY (fonction dagrgat) la page 211


Exemple Lexemple suivant renvoie la valeur 0.19379959710325653.
SELECT REGR_R2 (salary, (year(now()) - year(birth_date)))
FROM employee

REGR_SLOPE (fonction dagrgat)


Fonction Calcule la pente de la droite de rgression correspondant aux paires non
nulles.
Syntaxe REGR_SLOPE ( expression_dpendante, expression_indpendante )

Paramtres expression_dpendante Variable concerne par la variable indpendante.


expression_indpendante Variable qui influence le rsultat.
Utilisation La fonction renvoie une valeur numrique. Si la fonction est applique un
jeu vide, elle renvoie une valeur NULL.
Cette fonction sapplique au jeu de paires (expression_dpendante,
expression_indpendante ) aprs limination de toutes les paires dans
lesquelles expression_dpendante ou expression_indpendante a la valeur
NULL. Cette fonction est calcule simultanment au cours dune seule
transmission des donnes. Aprs limination des valeurs nulles, le calcul
suivant est ralis :
COVAR_POP ( x , y ) / VAR_POP ( y )
o x reprsente lexpression_dpendante et y lexpression_indpendante.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Fonction principale/SQL extrieure au langage SQL basique.
Sybase Non prise en charge par Adaptive Server Enterprise.

Voir aussi REGR_COUNT (fonction dagrgat) la page 212


REGR_INTERCEPT (fonction dagrgat) la page 213
REGR_COUNT (fonction dagrgat) la page 212
REGR_SXX (fonction dagrgat) la page 216
REGR_SXY (fonction dagrgat) la page 217
REGR_SYY (fonction dagrgat) la page 217
REGR_AVGX (fonction dagrgat) la page 210
REGR_AVGY (fonction dagrgat) la page 211
COVAR_POP (fonction dagrgat) la page 130
VAR_POP (fonction dagrgat) la page 248
Exemple Lexemple suivant renvoie la valeur 935.3429749445614.

215
SELECT REGR_SLOPE (salary, (year(now()) - year(birth_date)))
FROM employee

REGR_SXX (fonction dagrgat)


Fonction Renvoie des valeurs permettant dvaluer la validit statistique dun modle
de rgression.
Syntaxe REGR_SXX ( expression_dpendante, expression_indpendante )

Paramtres expression_dpendante Variable concerne par la variable indpendante.


expression_indpendante Variable qui influence le rsultat.
Utilisation La fonction renvoie une valeur numrique. Si la fonction est applique un
jeu vide, elle renvoie une valeur NULL.
Cette fonction sapplique au jeu de paires (expression_dpendante,
expression_indpendante ) aprs limination de toutes les paires dans
lesquelles expression_dpendante ou expression_indpendante a la valeur
NULL. Cette fonction est calcule simultanment au cours dune seule
transmission des donnes. Aprs limination des valeurs nulles, le calcul
suivant est ralis :
REGR_COUNT ( x , y ) * VAR_POP ( y )
o x reprsente lexpression_dpendante et y lexpression_indpendante.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Fonction principale/SQL extrieure au langage SQL basique.


Sybase Non prise en charge par Adaptive Server Enterprise.

Voir aussi REGR_COUNT (fonction dagrgat) la page 212


REGR_INTERCEPT (fonction dagrgat) la page 213
REGR_COUNT (fonction dagrgat) la page 212
REGR_AVGX (fonction dagrgat) la page 210
REGR_AVGY (fonction dagrgat) la page 211
REGR_SXY (fonction dagrgat) la page 217
REGR_SYY (fonction dagrgat) la page 217
VAR_POP (fonction dagrgat) la page 248
Exemple Lexemple suivant renvoie la valeur 5916.4800000000105.
SELECT REGR_SXX (salary, (year(now()) - year(birth_date)))
FROM employee

216
Chapitre 3. Fonctions SQL

REGR_SXY (fonction dagrgat)


Fonction Renvoie des valeurs permettant dvaluer la validit statistique dun modle
de rgression.
Syntaxe REGR_SXY ( expression_dpendante, expression_indpendante )

Paramtres expression_dpendante Variable concerne par la variable indpendante.


expression_indpendante Variable qui influence le rsultat.
Utilisation La fonction renvoie une valeur numrique. Si la fonction est applique un
jeu vide, elle renvoie une valeur NULL.
Cette fonction sapplique au jeu de paires (expression_dpendante,
expression_indpendante ) aprs limination de toutes les paires dans
lesquelles expression_dpendante ou expression_indpendante a la valeur
NULL. Cette fonction est calcule simultanment au cours dune seule
transmission des donnes. Aprs limination des valeurs nulles, le calcul
suivant est ralis :
REGR_COUNT ( x , y ) * VAR_POP ( x )
o x reprsente lexpression_dpendante et y lexpression_indpendante.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Fonction principale/SQL extrieure au langage SQL basique.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi REGR_COUNT (fonction dagrgat) la page 212
REGR_INTERCEPT (fonction dagrgat) la page 213
REGR_COUNT (fonction dagrgat) la page 212
REGR_SLOPE (fonction dagrgat) la page 215
REGR_AVGX (fonction dagrgat) la page 210
REGR_AVGY (fonction dagrgat) la page 211
REGR_SXX (fonction dagrgat) la page 216
REGR_SYY (fonction dagrgat) la page 217
Exemple Lexemple suivant renvoie la valeur 5533938.004400015.
SELECT REGR_SXY (salary, (year(now()) - year(birth_date)))
FROM employee

REGR_SYY (fonction dagrgat)


Fonction Renvoie des valeurs permettant dvaluer la validit statistique dun modle
de rgression.

217
Syntaxe REGR_SYY ( expression_dpendante, expression_indpendante )

Paramtres expression_dpendante Variable concerne par la variable indpendante.


expression_indpendante Variable qui influence le rsultat.
Utilisation La fonction renvoie une valeur numrique. Si la fonction est applique un
jeu vide, elle renvoie une valeur NULL.
Cette fonction sapplique au jeu de paires (expression_dpendante,
expression_indpendante ) aprs limination de toutes les paires dans
lesquelles expression_dpendante ou expression_indpendante a la valeur
NULL. Cette fonction est calcule simultanment au cours dune seule
transmission des donnes. Aprs limination des valeurs nulles, le calcul
suivant est ralis :
REGR_COUNT ( x , y ) * COVAR_POP (x, y )
o x reprsente lexpression_dpendante et y lexpression_indpendante.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Fonction principale/SQL extrieure au langage SQL basique.


Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi REGR_COUNT (fonction dagrgat) la page 212
REGR_INTERCEPT (fonction dagrgat) la page 213
REGR_COUNT (fonction dagrgat) la page 212
REGR_AVGX (fonction dagrgat) la page 210
REGR_AVGY (fonction dagrgat) la page 211
REGR_SLOPE (fonction dagrgat) la page 215
REGR_SXX (fonction dagrgat) la page 216
REGR_SXY (fonction dagrgat) la page 217
Exemple Lexemple suivant renvoie les valeurs 26, 708, 672,843.3002.
SELECT REGR_SYY (salary, (year(now()) - year(birth_date)))
FROM employee

REMAINDER (fonction numrique)


Fonction Renvoie le reste de la division dun nombre entier par un diviseur.
Syntaxe REMAINDER ( dividende, diviseur )

Paramtres dividende Dividende dune division, ou numrateur.


diviseur Diviseur dune division, ou dnominateur.
Normes et compatibilit SQL/92 Extension propritaire.

218
Chapitre 3. Fonctions SQL

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise. Les
oprateurs % (modulo) et de division peuvent tre utiliss pour produire
un reste.
Voir aussi MOD (fonction numrique) la page 188
Exemple Linstruction suivante renvoie le rsultat 2 :
SELECT REMAINDER( 5, 3 )

REPEAT (fonction de chane de caractres)


Fonction Concatne une chane autant de fois que le nombre indiqu.
Syntaxe REPEAT ( expression_chane, expression_entier )

Paramtres expression_chane Chane rpter.


expression_entier Nombre de rptitions de la chane. Si
expression_entier est une valeur ngative, une chane vide est renvoye.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase REPEAT ntant pas supporte par Adaptive Server Enterprise,
utilisez REPLICATE.
Voir aussi REPLICATE (fonction de chane de caractres) la page 220
Exemple Linstruction suivante renvoie la valeur repeatrepeatrepeat :
SELECT REPEAT( repeat, 3 )

REPLACE (fonction de chane de caractres)


Fonction Remplace toutes les occurrences dune sous-chane par une autre
sous-chane.
Syntaxe REPLACE ( chane_originale, chane_recherche, chane_remplacement )

Paramtres Si la valeur dun argument est NULL, la fonction renvoie NULL.


chane_originale Chane dans laquelle la recherche doit tre effectue.
Cette chane peut tre de nimporte quelle longueur.
chane_recherche Chane rechercher et remplacer par
chane_remplacement. Cette chane est limite 255 octets. Si
chane_recherche est vide, la chane originale est renvoye sans changement.

219
chane_remplacement Chane qui doit remplacer chane_recherche. La
longueur de cette chane peut tre quelconque. Si chane_remplacement est
vide, toutes les occurrences de chane_recherche sont supprimes.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi SUBSTRING (fonction de chane de caractres) la page 239
Exemple Linstruction suivante renvoie la valeur xx.def.xx.ghi :
SELECT REPLACE( abc.def.abc.ghi, abc, xx )

Linstruction suivante gnre un jeu de rsultats contenant les instructions


ALTER PROCEDURE qui, lorsquelles sont excutes, modifient des
procdures stockes rfrenant une table qui a t renomme. Le nom de la
table doit tre unique.
SELECT REPLACE(
replace(proc_defn,OldTableName,NewTableName),
create procedure,
alter procedure)
FROM SYS.SYSPROCEDURE
WHERE proc_defn LIKE %OldTableName%

Utilisez un sparateur autre que la virgule pour la fonction LIST :


SELECT REPLACE( list( table_id ), ,, --)
FROM SYS.SYSTABLE
WHERE table_id <= 5

REPLICATE (fonction de chane de caractres)


Fonction Concatne une chane autant de fois que le nombre indiqu.
Syntaxe REPLICATE ( expression_chane, expression_entier )

Paramtres expression_chane Chane rpter.


expression_entier Nombre de rptitions de la chane.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi REPEAT (fonction de chane de caractres) la page 219

220
Chapitre 3. Fonctions SQL

Exemple Linstruction suivante renvoie la valeur repeatrepeatrepeat :


SELECT REPLICATE( repeat, 3 )

REWRITE (fonction diverse)


Fonction Renvoie une instruction SELECT, UPDATE ou DELETE rcrite.
Syntaxe REWRITE ( instruction_select [ , ANSI ] )

Paramtres instruction_select Instruction SQL laquelle sont appliques les


optimisations de rcriture pour gnrer les rsultats de la fonction.
Utilisation Vous pouvez utiliser la fonction REWRITE sans largument ANSI pour
mieux comprendre comment loptimiseur a gnr le plan daccs pour une
requte donne. Vous pouvez notamment comprendre comment Adaptive
Server Anywhere a rcrit les conditions des clauses WHERE, ON et
HAVING de linstruction, puis dterminer sil existe des index susceptibles
dtre exploits pour amliorer la dure dexcution de la demande.
Il est possible que linstruction renvoye par la fonction REWRITE ne
corresponde pas la smantique de linstruction dorigine. Cela est d au
fait que plusieurs optimisations de rcriture impliquent des mcanismes
internes impossibles convertir directement en langage SQL. Par exemple,
le fait que le serveur se serve didentificateurs de ligne pour procder
llimination des doublons est impossible convertir en langage SQL.
La requte rcrite laide de la fonction REWRITE() nest pas cense tre
excutable. Il sagit dun outil qui permet danalyser les problmes de
performances en montrant ce qui passe par loptimiseur aprs la phase de
rcriture.
Certaines optimisations de rcriture napparaissent pas dans le rsultat de la
fonction REWRITE. Il sagit de loptimisation LIKE, de loptimisation des
fonctions minimum ou maximum, de la suppression des valeurs
suprieures/infrieures et de la supposition du prdicat.
Si ANSI est spcifi, la fonction REWRITE renvoie lquivalent ANSI dans
linstruction. Dans ce cas, seules les optimisations de rcriture suivantes
sont appliques :
Les jointures externes Transact-SQL sont rcrites en tant que jointures
externes ANSI SQL.
Les alias sont supprims.
Les jointures KEY et NATURAL sont rcrites en tant que jointures
ANSI SQL.

221
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi Transformations smantiques de requtes [ASA - Guide de lutilisateur
SQL, page 471]
Option EXTENDED_JOIN_SYNTAX [base de donnes] [ASA - Guide
dadministration, page 711]
Jointures externes Transact-SQL (*= ou =*) [ASA - Guide de lutilisateur
SQL, page 307]
Jointures par cl [ASA - Guide de lutilisateur SQL, page 322]
Jointures naturelles [ASA - Guide de lutilisateur SQL, page 318]
Alias en double dans des jointures (jointures en toile) [ASA - Guide de
lutilisateur SQL, page 311]

Exemple Dans lexemple suivant, deux optimisations de rcriture sont effectues sur
une requte. La premire correspond la dsimbrication de la
sous-requte dans une jointure entre les tables employee et sales_order. La
seconde optimisation simplifie la requte en liminant la jointure cl
primaire - cl trangre entre les tables employee et sales_order. Une partie
de cette optimisation de rcriture consiste remplacer le prdicat de
jointure e.emp_id=s.sales_rep par le prdicat s.sales_rep IS NOT NULL.
SELECT REWRITE( SELECT s.id, s.order_date
FROM sales_order s
WHERE EXISTS(SELECT *
FROM employee e
WHERE e.emp_id = s.sales_rep) ) FROM dummy

La requte renvoie un jeu de rsultats dune seule colonne contenant la


requte rcrite :
SELECT s.id, s.order_date FROM sales_order s WHERE s.sales_rep
IS NOT NULL

Lexemple suivant de la fonction REWRITE fait appel largument ANSI :


SELECT REWRITE( SELECT DISTINCT s.id, s.order_date, e.emp_
fname, e.emp_id
FROM sales_order s, employee e
WHERE e.emp_id *= s.sales_rep, ANSI ) FROM dummy

Le rsultat est lquivalent ANSI de linstruction. Dans ce cas, la jointure


externe Transact-SQL est convertie en jointure externe ANSI. La requte
renvoie un jeu de rsultats une seule colonne (scinde en plusieurs lignes
pour plus de lisibilit) :

222
Chapitre 3. Fonctions SQL

SELECT DISTINCT s.id, s.order_date, e.emp_id, e.emp_fname


FROM employee as e
LEFT OUTER JOIN sales_order as s
ON e.emp_id = s.sales_rep

RIGHT (fonction de chane de caractres)


Fonction Renvoie les caractres les plus droite dune chane.
Syntaxe RIGHT ( expression_chane, expression_entier )

Paramtres expression_chane Chane dont les caractres de gauche sont tronqus.


expression_entier Nombre de caractres de fin de chane renvoyer.
Utilisation Si la chane contient des caractres cods sur plusieurs octets et si le
classement adquat est utilis, le nombre doctets renvoy peut tre
suprieur au nombre de caractres spcifi.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Compatible avec Adaptive Server Enterprise.

Voir aussi LEFT (fonction de chane de caractres) la page 178


Langues internationales et jeux de caractres [ASA - Guide
dadministration, page 349]

Exemple Linstruction suivante renvoie olate :


SELECT RIGHT( chocolate, 5 )

ROUND (fonction numrique)


Fonction Arrondit lexpression_numrique au nombre de positions indiqu, aprs le
signe dcimal.
Syntaxe ROUND ( expression_numrique, expression_entier )

Paramtres expression_numrique Nombre arrondir, pass dans la fonction.


expression_entier Un entier positif spcifie le nombre de chiffres
significatifs droite du signe dcimal utiliser pour arrondir
expression_numrique. Un entier ngatif spcifie le nombre de chiffres
significatifs gauche du signe dcimal utiliser pour arrondir
expression_numrique.
Normes et compatibilit SQL/92 Extension propritaire.

223
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.

Voir aussi TRUNCNUM (fonction numrique) la page 245


Exemple Linstruction suivante renvoie le rsultat 123.200 :
SELECT ROUND( 123.234, 1 )

ROW_NUMBER (fonction dagrgat)


Fonction Affecte un numro unique chaque ligne.
Syntaxe ROW_NUMBER ( )

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Fonctionnalit SQL/OLAP T611
Sybase Non prise en charge par Adaptive Server Enterprise.

Voir aussi CUME_DIST (fonction dagrgat) la page 133


DENSE_RANK (fonction dagrgat) la page 147
PERCENT_RANK (fonction dagrgat) la page 203
RANK (fonction dagrgat) la page 209
Exemple Dans lexemple qui suit, un jeu de rsultats donnant un numro de ligne
unique chacun des employs travaillant dans lEtat de New York et dans
lUtah est renvoy. Dans la mesure les salaires sont classs dans lordre
dcroissant, le premier numro de ligne est attribu lemploy dont le
salaire est le plus lev dans lensemble de donnes. Lorsque deux employs
ont des salaires identiques, lgalit nest pas rsolue dans la mesure o des
numros de ligne uniques leur sont affects.
SELECT emp_lname, salary, state,
ROW_NUMBER () OVER (ORDER BY salary DESC) "Rank"
FROM employee WHERE state IN (NY,UT)

emp_lname salary state Rank

Shishov 72995.000 UT 1

Wang 68400.000 UT 2

Cobb 62000.000 UT 3

Morris 61300.000 UT 4

Davidson 57090.000 NY 5

224
Chapitre 3. Fonctions SQL

emp_lname salary state Rank

Martel 55700.000 NY 6

Blaikie 54900.000 NY 7

Diaz 54900.000 NY 8

Driscoll 48023.690 UT 9
Hildebrand 45829.000 UT 10

... ... ... ...

Lynch 24903.000 UT 19

RTRIM (fonction de chane de caractres)


Fonction Supprime dune chane les blancs en fin de chane ( droite).
Syntaxe RTRIM ( expression_chane )

Paramtres expression_chane Chane dont les blancs doivent tre supprims.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Compatible avec Adaptive Server Enterprise.


Voir aussi LTRIM (fonction de chane de caractres) la page 185
Exemple Linstruction qui suit renvoie la chane Test Message aprs suppression de
tous les blancs en fin de chane.
SELECT RTRIM( Test Message )

SECOND (fonction de date et dheure)


Fonction Renvoie un nombre compris entre 0 et 59, correspondant llment
seconde de la date indique.
Syntaxe SECOND ( expression_dateheure )

Paramtres expression_dateheure Date et heure.


Normes et compatibilit SQL/92 Extension propritaire.

Sybase Compatible avec Adaptive Server Enterprise.

225
Exemple Linstruction suivante renvoie le rsultat 21 :
SELECT SECOND( 1998-07-13:21:21:25 )

SECONDS (fonction de date et dheure)


Fonction Si deux estampilles sont indiques, cette fonction renvoie un entier
correspondant au nombre de secondes entier compris entre ces deux
estampilles. Dans ce cas, il est prfrable dutiliser la fonction DATEDIFF
(fonction de date et dheure) la page 136.
Si une seule date est indique, cette fonction renvoie le nombre de secondes
entre cette date et lestampille 0000-02-29 00:00:00.
Si une date et un entier sont indiqus, elle ajoute le nombre de secondes
entier lestampille indique. Dans ce cas, il est prfrable dutiliser la
fonction DATEADD (fonction de date et dheure) la page 135.
La syntaxe 1 renvoie des donnes de type bigint. La syntaxe 2 renvoie une
estampille.
Syntaxe 1 SECONDS ( [ expression_dateheure, ] expression_dateheure )

Syntaxe 2 SECONDS ( expression_dateheure, expression_entier )

Paramtres expression_dateheure Date et heure.


expression_entier Nombre de secondes ajouter expression_dateheure.
Si la valeur dexpression_entier est ngative, le nombre de minutes
appropri est soustrait de la valeur dateheure. Si vous indiquez une
expression_entier, expression_dateheure doit tre explicitement convertie en
un type de donnes DATETIME.
Pour plus dinformations sur la conversion des types de donnes,
reportez-vous la section CAST (fonction de conversion de types de
donnes) la page 116.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Exemple Les instructions suivantes renvoient le rsultat 14 400, ce qui signifie que la
seconde estampille est postrieure la premire de 14 400 secondes.
SELECT SECONDS( 1999-07-13 06:07:12,
1999-07-13 10:07:12 )
SELECT DATEDIFF( second,
1999-07-13 06:07:12,
1999-07-13 10:07:12 )

226
Chapitre 3. Fonctions SQL

Linstruction suivante renvoie le rsultat 63 062 431 632 :


SELECT SECONDS( 1998-07-13 06:07:12 )

Linstruction suivante renvoie lestampille 1999-05-12 21:05:12.0 :


SELECT SECONDS( CAST( 1999-05-12 21:05:07
AS TIMESTAMP ), 5)
SELECT DATEADD( second, 1999-05-12 21:05:07 )

SHORT_ULPLAN (fonction diverse)


Fonction Renvoie une description synthtique de la stratgie doptimisation de plans
UltraLite dune instruction SQL, sous forme de chane. La description est
identique celle renvoye par la fonction EXPLANATION.
Pour certaines requtes, le plan dexcution UltraLite peut tre diffrent du
plan slectionn pour Adaptive Server Anywhere.
Syntaxe SHORT_ULPLAN ( expression_chane )

Paramtres expression_chane Instruction SQL qui est le plus souvent une


instruction SELECT, mais qui peut aussi tre UPDATE ou DELETE.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi PLAN (fonction diverse) la page 204
EXPLANATION (fonction diverse) la page 159
GRAPHICAL_PLAN (fonction diverse) la page 163
GRAPHICAL_ULPLAN (fonction diverse) la page 164
LONG_ULPLAN (fonction diverse) la page 184
Exemple Linstruction suivante transmet une instruction SELECT sous forme de
paramtre de chane et renvoie le plan pour excuter la requte.
SELECT EXPLANATION(
select * from department where dept_id > 100 )

Ces informations sont utiles lorsque vous devez dcider de lajout dindex
ou pour dterminer la structure la plus adapte votre base de donnes en
vue damliorer les performances.
Dans Interactive SQL, vous pouvez visualiser le plan renvoy par nimporte
quelle instruction SQL dans longlet Plan UltraLite du volet Rsultats.

227
SIGN (fonction numrique)
Fonction Renvoie le signe dun nombre.
Syntaxe SIGN ( expression_numrique )

Paramtres expression_numrique Nombre dont le signe doit tre renvoy.


Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Compatible avec Adaptive Server Enterprise.
Exemple Linstruction suivante renvoie -1 :
SELECT SIGN( -550 )

Valeur renvoye Pour les nombres ngatifs, SIGN renvoie -1.


Pour zro, SIGN renvoie 0.
Pour les nombres positifs, SIGN renvoie 1.

SIMILAR (fonction de chane de caractres)


Fonction Renvoie un nombre indiquant la similarit entre deux chanes.
Syntaxe SIMILAR ( expression_chane1, expression_chane2 )

Paramtres expression_chane1 Premire chane comparer.


expression_chane1 Deuxime chane comparer.
Utilisation Cette fonction renvoie un entier compris entre 0 et 100, reprsentant la
similarit entre les deux chanes. Le rsultat peut tre interprt comme le
pourcentage de caractres correspondants entre les deux chanes. indique
que les deux chanes sont identiques.
Cette fonction savre trs utile pour corriger une liste de noms (des noms de
client, par exemple). Il est possible que certains noms de client aient t
ajouts plusieurs fois la liste avec une orthographe lgrement diffrente.
Dans ce cas, effectuez une jointure de la table avec elle-mme et gnrez un
tat de toutes les similarits comprises entre 90 et 100 %.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

228
Chapitre 3. Fonctions SQL

Exemple Linstruction suivante renvoie le rsultat 75 :


SELECT SIMILAR( toast, coast )

La valeur renvoye (75) signifie que les deux valeurs sont similaires 75 %.

SIN (fonction numrique)


Fonction Renvoie le sinus dun nombre.
Syntaxe SIN ( expression_numrique )

Paramtres expression_numrique Angle en radians.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi ASIN (fonction numrique) la page 112
COS (fonction numrique) la page 128
COT (fonction numrique) la page 129
TAN (fonction numrique) la page 241
Exemple Linstruction suivante renvoie le rsultat 0.496880 :
SELECT SIN( 0.52 )

SORTKEY (fonction de chane de caractres)


Fonction Gnre des valeurs permettant de trier des chanes de caractres selon
dautres rgles de classement.
Syntaxe SORTKEY ( expression_chane
[, nom_classement | , id_classement ] )

Paramtres expression_chane Les expressions de type chane ne peuvent contenir


que des caractres cods dans le jeu de caractres de la base de donnes.
Si expression_chane est une chane vide, SORTKEY renvoie une valeur
binaire de longueur gale zro. Si la valeur dexpression_chane est
NULL, SORTKEY renvoie une valeur NULL. La valeur dordre de tri dune
chane vide est diffrente de celle dune chane NULL dune colonne de
base de donnes.
La longueur de chane maximale pouvant tre traite par SORTKEY est de
254 octets. La partie excdant cette longueur est ignore.
nom_classement Variable de type chane ou caractre qui indique le nom
de lordre de tri utiliser.

229
id_classement Variable, constante entire ou chane qui indique lID de
lordre de tri utiliser.
Si vous ne spcifiez pas de classement, cest le classement Unicode
multilingue par dfaut qui est utilis.
Voici les valeurs possibles pour nom_classement et id_classement :

Description Nom de clas- ID de classe-


sement ment

Unicode multilingue par dfaut valeur par d- 0


faut

Alternative CP 850 : sans accents altnoacc 39

Alternative CP 850 : minuscules en altdict 45


premier

Dictionnaire Europe occidentale CP 850 : altnocsp 46


sans distinction majuscules/minuscules

Dictionnaire scandinave CP 850 scandict 47

Dictionnaire scandinave CP 850 : sans scannocp 48


distinction majuscules/minuscules

GB Pinyin gbpinyin N/A

Tri binaire binary 50

Dictionnaire latin-1 anglais, franais, dict 51


allemand

Dictionnaire latin-1 anglais, fran- nocase 52


ais, allemand, sans distinction majus-
cules/minuscules

Dictionnaire latin-1 anglais, fran- nocasep 53


ais, allemand, sans distinction majus-
cules/minuscules
Dictionnaire latin-1 anglais, franais, noaccent 54
allemand, sans accents

Dictionnaire latin-1 espagnol espdict 55

Dictionnaire latin-1 espagnol sans distinc- espnocs 56


tion majuscules/minuscules

Dictionnaire latin-1 espagnol sans accents espnoac 57

230
Chapitre 3. Fonctions SQL

Description Nom de clas- ID de classe-


sement ment

Dictionnaire russe ISO 8859-5 rusdict 58

Dictionnaire russe ISO 8859-5, sans ac- rusnocs 59


cents

Dictionnaire cyrillique ISO 8859-5 cyrdict 63

Dictionnaire cyrillique ISO 8859-5, sans cyrnocs 64


accents

Dictionnaire grecque ISO 8859-7 elldict 65

Dictionnaire hongrois ISO 8859-2 hundict 69

Dictionnaire hongrois ISO 8859-2, sans hunnoac 70


accents

Dictionnaire hongrois ISO 8859-2, sans hunnocs 71


distinction majuscules/minuscules

Dictionnaire turc ISO 8859-5 turdict 72

Dictionnaire turc ISO 8859-5, sans ac- turnoac 73


cents

Dictionnaire turc ISO 8859-5, sans dis- turnocs 74


tinction majuscules/minuscules

Dictionnaire tha royal CP 874 (TIS 620) thaidict 257

Tri standard ISO 14651 14651 258

Ordre binaire Shift-JIS sjisbin 259

Tri binaire Unicode UTF-8 utf8bin 260

Ordre binaire EUC JIS eucjisbin 261

Ordre binaire GB2312 gb2312bn 262

Ordre binaire CP932 MS cp932bin 263

Ordre binaire Big5 big5bin 264


Ordre binaire EUC KSC euckscbin 265

Utilisation La fonction SORTKEY gnre des valeurs permettant de classer des


rsultats en fonction dun ordre de tri prdfini. Vous pouvez ainsi travailler
avec des ordres de tri de caractres qui dpassent les limites des classements

231
Adaptive Server Anywhere. La valeur renvoye est une valeur binaire
contenant des informations dordre de tri codes pour la chane dentre
retenue par la fonction SORTKEY.
Par exemple, vous pouvez stocker les valeurs renvoyes par SORTKEY dans
une colonne avec la chane de caractres source. Lorsque vous voulez
extraire les donnes de type caractre dans lordre souhait, il suffit
linstruction SELECT dinclure une clause ORDER BY sur les colonnes
contenant les rsultats de la fonction SORTKEY excute.
La fonction SORTKEY garantit que les valeurs renvoyes pour des critres
dordre de tri donns sont utilisables pour les comparaisons binaires
effectues sur les types de donnes VARBINARY.
En entre, SORTKEY peut gnrer jusqu six octets dinformations dordre
de tri pour chaque caractre saisi. Le rsultat de SORTKEY est de type
VARBINARY et sa longueur maximale est de (254*6)octets.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Compatible avec Adaptive Server Enterprise, si ce nest que les


ordres de tri dfinis par lutilisateur ne peuvent pas y tre utiliss.

Voir aussi COMPARE (fonction de chane de caractres) la page 119


Prsentation des langues internationales et des jeux de caractres [ASA -
Guide dadministration, page 350]

Exemple Les instructions suivantes renvoient les valeurs de cl de tri dans lordre de
tri : Dictionnaire latin-1 anglais, franais, allemand.
SELECT SORTKEY(coop, dict)

SORTKEY( coop, dict )

0x08890997099709b30008000800080008
SELECT SORTKEY ( C-op, 51 )

SORTKEY( C-op, 51 )

0x08890997099709b30020004700020008000800080001fffd002d

SOUNDEX (fonction de chane de caractres)


Fonction Renvoie un nombre reprsentant le son dune chane.
Syntaxe SOUNDEX ( expression_chane )

232
Chapitre 3. Fonctions SQL

Paramtres expression_chane Chane.


Utilisation La valeur associe la fonction SOUNDEX pour une chane donne repose
sur la premire lettre, ainsi que sur les trois consonnes suivantes autres
que H, Y et W. Les lettres doubles comptent pour une. Par exemple :
SOUNDEX( apples )

repose sur les lettres A, P, L et S.


Les caractres cods sur plusieurs octets sont ignors.
Bien quelle ne soit pas parfaite, la fonction SOUNDEX renvoie
gnralement le mme nombre pour les homophones commenant par la
mme lettre.
Cest avec les mots anglais quelle fonctionne le mieux. Elle est moins utile
pour les autres langues.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Compatible avec Adaptive Server Enterprise, si ce nest
quAdaptive Server Enterprise renvoie un rsultat CHAR(4) alors
quAdaptive Server Anywhere renvoie un entier.

Exemple Linstruction suivante renvoie deux nombres reprsentant le son de chaque


nom. La valeur SOUNDEX pour chaque argument est 3827.
SELECT SOUNDEX( Smith ), SOUNDEX( Smythe )

SPACE (fonction de chane de caractres)


Fonction Renvoie un nombre despaces spcifi.
Syntaxe SPACE ( expression_entier )

Paramtres expression_entier Nombre despaces renvoyer.


Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Compatible avec Adaptive Server Enterprise.
Exemple Linstruction suivante renvoie une chane contenant 10 espaces.
SELECT SPACE( 10 )

233
SQLDIALECT (fonction diverse)
Fonction Renvoie Watcom-SQL ou Transact-SQL pour indiquer le langage SQL
dune instruction.
Syntaxe SQLDIALECT ( chane_instruction_sql )

Paramtres chane_instruction_sql Instruction SQL utilise par la fonction pour


dterminer son dialecte.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi TRANSACTSQL (fonction diverse) la page 243
WATCOMSQL (fonction diverse) la page 250
Exemple Linstruction suivante renvoie la chane Transact-SQL.
SELECT
SQLDIALECT( SELECT employeeName = emp_lname FROM employee )
FROM dummy

SQRT (fonction numrique)


Fonction Renvoie la racine carre dun nombre.
Syntaxe SQRT ( expression_numrique )

Paramtres expression_numrique Nombre dont la racine carre doit tre renvoye.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Compatible avec Adaptive Server Enterprise.

Exemple Linstruction suivante renvoie le rsultat 3 :


SELECT SQRT( 9 )

STDDEV (fonction dagrgat)


Fonction Alias pour STDDEV_SAMP. Reportez-vous la section STDDEV_SAMP
(fonction dagrgat) la page 235.

234
Chapitre 3. Fonctions SQL

STDDEV_POP (fonction dagrgat)


Fonction Calcule lcart standard dun remplissage consistant en une expression
numrique, comme DOUBLE.
Syntaxe STDDEV_POP ( expression_numrique )

Paramtres expression_numrique Expression dont lcart standard bas sur le


remplissage est calcul sur un ensemble de lignes. Lexpression est
gnralement un nom de colonne.
Utilisation Les carts standard bass sur le remplissage sont calculs selon la formule
suivante :
s = [ (1/N) * SUM( xi - mean( x ) )2 ]1/2
Cet cart standard ninclut pas de lignes dans lesquelles
expression_numrique a la valeur NULL. La fonction renvoie la valeur
NULL si le groupe ne contient aucune ligne.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Fonction principale/SQL extrieure au langage SQL basique.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi Fonctions dagrgat la page 96
Exemple Linstruction suivante dresse la liste des moyennes et des variances du
nombre dlments par commande diffrentes poques :
SELECT year( ship_date ) AS Year,
quarter( ship_date ) AS Quarter,
avg( quantity ) AS Average,
STDDEV_POP( quantity ) AS Variance
FROM sales_order_items
GROUP BY Year, Quarter
ORDER BY Year, Quarter

Anne Trimestre Moyenne Variance

2000 1 25.775148 14.2794. . .

2000 2 27.050847 15.0270. . .

... ... ... ...

STDDEV_SAMP (fonction dagrgat)


Fonction Calcule lcart standard dun chantillon consistant en une expression
numrique, comme DOUBLE.

235
Syntaxe STDDEV_SAMP ( expression_numrique )

Paramtres expression_numrique Expression dont lcart standard bas sur


lchantillon est calcul sur un ensemble de lignes. Lexpression est
gnralement un nom de colonne.
Utilisation Lcart standard est calcul selon la formule suivante, qui suppose une
rpartition normale :
s = [ (1/( N - 1 )) * SUM( xi - mean( x ) )2 ]1/2
Cet cart standard ninclut pas de lignes dans lesquelles
expression_numrique a la valeur NULL. La fonction renvoie la valeur
NULL si le groupe ne contient aucune ligne.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Fonction principale/SQL extrieure au langage SQL basique.

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi Fonctions dagrgat la page 96
Exemple Linstruction suivante dresse la liste des moyennes et des variances du
nombre dlments par commande diffrentes poques :
SELECT year( ship_date ) AS Year,
quarter( ship_date ) AS Quarter,
avg( quantity ) AS Average,
STDDEV_SAMP( quantity ) AS Variance
FROM sales_order_items
GROUP BY Year, Quarter
ORDER BY Year, Quarter

Anne Trimestre Moyenne Variance

2000 1 25.775148 14.3218. . .

2000 2 27.050847 15.0696. . .

... ... ... ...

STR (fonction de chane de caractres)


Fonction Renvoie la chane quivalente au nombre spcifi.
Syntaxe STR ( expression_numrique [, longueur [, dcimal ] ] )

Paramtres expression_numrique Toute expression numrique arrondie (prcision


float, real ou double) comprise entre -1E126 et 1E127.

236
Chapitre 3. Fonctions SQL

longueur Nombre de caractres renvoyer (y compris le signe dcimal,


tous les chiffres situs droite et gauche du signe dcimal, ainsi que les
blancs). La valeur par dfaut est 10.
dcimal Nombre de dcimales renvoyer. La valeur par dfaut est 0.
Utilisation Si la partie entire du nombre ne tient pas dans la longueur spcifie, le
rsultat est une chane de la longueur spcifie contenant des astrisques. Par
exemple, linstruction suivante renvoie *** :
SELECT STR( 1234.56, 3 )

Remarque
La longueur maximale supporte est 128. Toute longueur non comprise
entre 1 et 128 conduit un rsultat NULL.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Compatible avec Adaptive Server Enterprise.

Exemple Linstruction suivante renvoie une chane de six espaces suivie de 1235, pour
un total de 10 caractres :
SELECT STR( 1234.56 )

Linstruction suivante renvoie le rsultat 1234,6 :


SELECT STR( 1234.56, 6, 1 )

STRING (fonction de chane de caractres)


Fonction Concatne une ou plusieurs chanes en une seule chane plus grande.
Syntaxe STRING ( expression_chane [, . . .] )

Paramtres expression_chane Chane.


Si un seul argument est indiqu, expression_chane est converti en une
expression unique. Si plusieurs arguments sont spcifis, ils sont concatns
en une chane unique.
Utilisation Les paramtres numriques ou les dates sont convertis en chanes avant la
concatnation. La fonction STRING permet galement de convertir toute
expression unique (dclare comme seul paramtre) en chane.
Si la valeur de tous les paramtres est NULL, STRING renvoie NULL. Si
aucun paramtre na la valeur NULL, tout paramtre NULL est trait
comme une chane vide.

237
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.

Exemple Linstruction suivante renvoie la valeur testing123 :


SELECT STRING( testing, NULL, 123 )

STRTOUUID (fonction de chane de caractres)


Fonction Convertit une valeur de chane en une valeur didentificateur unique (UUID
ou GUID).

Fonction non requise dans les bases de donnes plus rcentes


Dans les bases de donnes cres avant la version 9.0.2, le type de donnes
UNIQUEIDENTIFIER est considr comme un type de donnes dfini par
lutilisateur et les fonctions STRTOUUID et UUIDTOSTR sont requises
pour convertir des valeurs UUID au format chane ou binaire.
Dans les bases de donnes cres laide de la version 9.0.2 ou dune
version ultrieure, UNIQUEIDENTIFIER est un type de donnes natif
et Adaptive Server Anywhere se charge des conversions ncessaires. Par
consquent, les fonctions STRTOUUID et UUIDTOSTR ne sont pas
ncessaires.
Pour plus dinformations, reportez-vous la section Type de donnes
UNIQUEIDENTIFIER [Binaire] la page 79.
Syntaxe STRTOUUID ( expression_chane )

Paramtres expression_chane Chane dans le format


xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Utilisation Convertit une chane de format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,
x tant un chiffre hexadcimal, en une valeur didentificateur unique. Si la
chane nest pas une chane UUID correcte, une erreur de conversion est
renvoye sauf si loption CONVERSION_ERROR est dsactive, auquel cas
la valeur NULL est renvoye.
Cette fonction est utile pour insrer des valeurs UUID dans une base de
donnes.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

238
Chapitre 3. Fonctions SQL

Voir aussi UUIDTOSTR (fonction de chane de caractres) la page 246


NEWID (fonction diverse) la page 190
Exemple CREATE TABLE T1 (
pk UNIQUEIDENTIFIER PRIMARY KEY,
c1 INT );
INSERT INTO T1 (pk, c1)
VALUES (STRTOUUID
(12345678-1234-5678-9012-123456789012), 1);

STUFF (fonction de chane de caractres)


Fonction Supprime un nombre de caractres dune chane et les remplace par une
autre chane.
Syntaxe STUFF ( expression_chane1, dbut, longueur , expression_chane2 )

Paramtres expression_chane1 Chane modifier par la fonction STUFF.


dbut Position partir de laquelle les caractres sont supprims. Le
premier caractre correspond la position 1.
longueur Nombre de caractres supprimer.
expression_chane2 Chane insrer. Pour supprimer une partie de
chane laide de STUFF, remplacez-la par une chane NULL.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi INSERTSTR (fonction de chane de caractres) la page 174
Exemple Linstruction suivante renvoie la valeur chocolate pie.
SELECT STUFF( chocolate cake, 11, 4, pie )

SUBSTRING (fonction de chane de caractres)


Fonction Renvoie la sous-chane dune chane.
Syntaxe { SUBSTRING | SUBSTR }( expression_chane, dbut [, longueur ] )

Paramtres expression_chane Chane partir de laquelle une sous-chane doit tre


renvoye.
dbut Position de dbut de la sous-chane renvoyer, en caractres. Une
position de dpart ngative indique un nombre de caractres partir de la fin

239
de la chane, et non du dbut. Le premier caractre correspond la
position 1.
longueur Longueur de la sous-chane renvoyer, en caractres. Une valeur
positive de longueur indique que la sous-chane se termine longueur
caractres droite de la position de dpart, tandis quune valeur ngative de
longueur renvoie longueur caractres maximum jusqu la position de
dpart (comprise), en partant gauche de cette position.
Utilisation Les valeurs de dbut et de longueur peuvent tre positives ou ngatives.
Avec des combinaisons adquates de nombres positifs et ngatifs, vous
pouvez extraire une sous-chane partir du dbut ou de la fin de la chane.
Si vous spcifiez longueur, la sous-chane est limite cette longueur. Si la
valeur de dbut est gale zro et que la longueur est positive, la valeur de
dbut utilise est gale 1. Si la valeur de dbut est gale zro et que la
longueur est ngative, la valeur de dbut utilise est alors gale -1.
Si le type de donnes dexpression_chane est binaire, la fonction
SUBSTRING se comporte comme la fonction BYTE_SUBSTR.
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.
SQL/99 Fonction principale.
Sybase SUBSTRING est compatible avec Adaptive Server Enterprise.
Mais SUBSTR nest pas prise en charge par Adaptive Server Enterprise.
Voir aussi BYTE_SUBSTR (fonction de chane de caractres) la page 115
Exemple Linstruction suivante renvoie back :
SELECT SUBSTRING( back yard, 1, 4 )

Linstruction suivante renvoie yard :


SELECT SUBSTRING( back yard, 6, 4 )

Linstruction suivante renvoie gh :


SELECT SUBSTR(abcdefgh,0,-2)

Linstruction suivante renvoie gh :


SELECT SUBSTR(abcdefgh,-2,2)

Les instructions suivantes renvoient lune et lautre ab :


SELECT SUBSTR(abcdefgh,2,-2)

SELECT SUBSTR(abcdefgh,2,-4)

Linstruction suivante renvoie b :

240
Chapitre 3. Fonctions SQL

SELECT SUBSTR(abcdefgh,2,-1)

SUM (fonction dagrgat)


Fonction Renvoie le total de lexpression spcifie pour chaque groupe de lignes.
Syntaxe SUM ( expression | DISTINCT nom_colonne )

Paramtres expression Objet sur lequel la somme est effectuer. Il sagit en gnral
dun nom de colonne.
nom_colonne DISTINCT Cette fonction, dune utilit limite, nest incluse
que par souci dexhaustivit.
Utilisation Les lignes dans lesquelles lexpression spcifie a la valeur NULL ne sont
pas incluses.
La fonction renvoie la valeur NULL si le groupe ne contient aucune ligne.
Normes et compatibilit SQL/92 Compatible SQL/92.
SQL/99 Fonction principale.

Sybase Compatible avec Adaptive Server Enterprise.


Voir aussi COUNT (fonction dagrgat) la page 129
AVG (fonction dagrgat) la page 113
Exemple Linstruction suivante renvoie le rsultat 3749146 :
SELECT SUM( salary )
FROM Employee

TAN (fonction numrique)


Fonction Renvoie la tangente dun nombre.
Syntaxe TAN ( expression_numrique )

Paramtres expression_numrique Angle en radians.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi COS (fonction numrique) la page 128
SIN (fonction numrique) la page 229

241
Exemple Linstruction suivante renvoie le rsultat 0.572561 :
SELECT TAN( 0.52 )

TEXTPTR (fonction texte et image)


Fonction Renvoie le pointeur binaire 16 octets sur la premire page de la colonne de
texte spcifie.
Syntaxe TEXTPTR ( nom_colonne )

Paramtres nom_colonne Nom dune colonne de texte.


Utilisation Cette fonction est mise en oeuvre pour la compatibilit avec Transact-SQL.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Exemple Utilisez la fonction TEXTPTR pour localiser la colonne de texte, copy,
associe au_id 486-29-1786 dans la table dauteur blurbs.
Le pointeur de texte est plac dans une variable locale @val, et fournie en
tant que paramtre la commande readtext, qui renvoie 5 octets,
commenant au second octet (offset gal 1).
DECLARE @val VARBINARY(16)
SELECT @val = TEXTPTR(copy)
FROM blurbs
WHERE au_id = "486-29-1786"
READTEXT blurbs.copy @val 1 5

TODAY (fonction de date et dheure)


Fonction Renvoie la date courante. Il sagit de lancienne syntaxe de
CURRENT DATE.
Syntaxe TODAY ( * )

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Les instructions suivantes renvoient le jour courant en fonction de lhorloge
systme.
SELECT TODAY( * )
SELECT CURRENT DATE

242
Chapitre 3. Fonctions SQL

TRACEBACK (fonction diverse)


Fonction Renvoie une chane contenant la trace en sens inverse des procdures et des
triggers qui taient en cours dexcution lorsque lexception (erreur) la plus
rcente sest produite.
Syntaxe TRACEBACK ( * )

Utilisation Cette fonction est pratique pour les procdures et les triggers de dbogage.
Normes et compatibilit SQL/92 Extension de Transact-SQL.
SQL/99 Extension de Transact-SQL.
Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Pour utiliser la fonction traceback, saisissez linstruction suivante en cas
derreur lors de lexcution dune procdure :
SELECT TRACEBACK ( * )

TRANSACTSQL (fonction diverse)


Fonction Rcrit une instruction Watcom-SQL dans le dialecte Transact-SQL.
Syntaxe TRANSACTSQL ( chane_instruction_sql )

Paramtres chane_instruction_sql Instruction SQL utilise par la fonction pour


dterminer son dialecte.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi SQLDIALECT (fonction diverse) la page 234
WATCOMSQL (fonction diverse) la page 250
Exemple Linstruction suivante renvoie la chane select EmployeeName =
empl_name from employee.
SELECT TRANSACTSQL( SELECT empl_name as EmployeeName FROM
employee ) FROM dummy

TRIM (fonction de chane de caractres)


Fonction Supprime les blancs de dbut ( gauche) et de fin ( droite) dune chane.
Syntaxe TRIM ( expression_chane )

243
Paramtres expression_chane Chane dont les blancs doivent tre supprims.
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.
SQL/99 Fonction principale.

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi LTRIM (fonction de chane de caractres) la page 185
RTRIM (fonction de chane de caractres) la page 225
Exemple Linstuction suivante renvoie la valeur chocolate sans blancs gauche ni
droite.
SELECT TRIM( chocolate )

TRUNCATE (fonction numrique)


Fonction Tronque un nombre aprs le signe dcimal, du nombre de positions indiqu.
Cette fonction, obsolte, est remplace par TRUNCNUM.
Syntaxe "TRUNCATE" ( expression_numrique, expression_entier )

Paramtres expression_numrique Nombre tronquer.


expression_entier Un entier positif spcifie le nombre de chiffres
significatifs droite du signe dcimal utiliser pour arrondir
expression_numrique. Un entier ngatif spcifie le nombre de chiffres
significatifs gauche du signe dcimal utiliser pour arrondir
expression_numrique.
Utilisation Cette fonction est identique la fonction TRUNCNUM. Il est conseill
dutiliser TRUNCNUM, qui nentrane pas de conflits de mots-cls.
Les guillemets sont obligatoires pour viter toute confusion de mots-cls
avec linstruction TRUNCATE TABLE. Vous ne pouvez utiliser
TRUNCATE sans guillemets que si loption QUOTED_IDENTIFIER a la
valeur OFF.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi Option QUOTED_IDENTIFIER [compatibilit] [ASA - Guide
dadministration, page 746]
TRUNCNUM (fonction numrique) la page 245

244
Chapitre 3. Fonctions SQL

Exemple Linstruction suivante renvoie le rsultat 600 :


SELECT "TRUNCATE"( 655, -2 )

Linstruction suivante renvoie le rsultat 655.340 :


SELECT "TRUNCATE"( 655.348, 2 )

TRUNCNUM (fonction numrique)


Fonction Tronque un nombre aprs le signe dcimal, du nombre de positions indiqu.
Syntaxe TRUNCNUM ( expression_numrique, expression_entier )

Paramtres expression_numrique Nombre tronquer.


expression_entier Un entier positif spcifie le nombre de chiffres
significatifs droite du signe dcimal utiliser pour arrondir
expression_numrique. Un entier ngatif spcifie le nombre de chiffres
significatifs gauche du signe dcimal utiliser pour arrondir
expression_numrique.
Utilisation Cette fonction est identique TRUNCATE, si ce nest quelle ne provoque
pas de conflits de mots-cls.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

Voir aussi ROUND (fonction numrique) la page 223


TRUNCATE (fonction numrique) la page 244
Exemple Linstruction suivante renvoie le rsultat 600 :
SELECT TRUNCNUM( 655, -2 )

Linstruction suivante renvoie la valeur 655.340.


SELECT TRUNCNUM( 655.348, 2 )

UCASE (fonction de chane de caractres)


Fonction Convertit tous les caractres dune chane en majuscules.
Syntaxe UCASE ( expression_chane )

Paramtres expression_chane Chane convertir en majuscules.


Normes et compatibilit SQL/92 Extension propritaire.

245
SQL/99 Extension propritaire.
Sybase UCASE nest pas prise en charge par Adaptive Server
Enterprise. En remplacement, utilisez la fonction UPPER.
Voir aussi UPPER (fonction de chane de caractres) la page 246
LCASE (fonction de chane de caractres) la page 177
Exemple Linstruction suivante renvoie CHOCOLATE :
SELECT UCASE( ChocoLate )

UPPER (fonction de chane de caractres)


Fonction Convertit tous les caractres dune chane en majuscules.
Syntaxe UPPER ( expression_chane )

Paramtres expression_chane Chane convertir en majuscules.


Normes et compatibilit SQL/92 Cette fonction est compatible avec SQL/92.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.

Voir aussi UCASE (fonction de chane de caractres) la page 245


LCASE (fonction de chane de caractres) la page 177
LOWER (fonction de chane de caractres) la page 184
Exemple Linstruction suivante renvoie CHOCOLATE :
SELECT UPPER( ChocoLate )

UUIDTOSTR (fonction de chane de caractres)


Fonction Convertit une valeur didentificateur unique (UUID, galement appel
GUID) en une valeur de chane.

246
Chapitre 3. Fonctions SQL

Fonction non requise dans les bases de donnes plus rcentes


Dans les bases de donnes cres avant la version 9.0.2, le type de donnes
UNIQUEIDENTIFIER est considr comme un type de donnes dfini par
lutilisateur et les fonctions STRTOUUID et UUIDTOSTR sont requises
pour convertir des valeurs UUID au format chane ou binaire.
Dans les bases de donnes cres laide de la version 9.0.2 ou dune
version ultrieure, UNIQUEIDENTIFIER est un type de donnes natif
et Adaptive Server Anywhere se charge des conversions ncessaires. Par
consquent, les fonctions STRTOUUID et UUIDTOSTR ne sont pas
ncessaires.
Pour plus dinformations, reportez-vous la section Type de donnes
UNIQUEIDENTIFIER [Binaire] la page 79.
Syntaxe UUIDTOSTR ( expression_uuid )

Paramtres expression_uuid Valeur didentificateur unique.


Utilisation Convertit une valeur didentificateur unique dans une valeur de chane de
format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, x tant un chiffre
hexadcimal. Si la valeur binaire nest pas un identificateur unique correct,
la valeur NULL est renvoye.
Cette fonction est utile si vous souhaitez visualiser une valeur UUID.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

Voir aussi NEWID (fonction diverse) la page 190


STRTOUUID (fonction de chane de caractres) la page 238
Exemple Linstruction suivante cre une table mytab avec deux colonnes. La colonne
pk est de type identificateur unique, et la colonne c1 est de type nombre
entier. Ensuite, elle insre deux lignes avec les valeurs 1 et 2 respectivement
dans la colonne c1.
CREATE TABLE T1(
pk UNIQUEIDENTIFIER PRIMARY KEY DEFAULT NEWID(),
c1 INT );
INSERT INTO T1( c1 ) values ( 1 );
INSERT INTO T1( c1 ) values ( 2 );

Lexcution de linstruction SELECT ci-aprs renvoie toutes les donnes


dans la table qui vient dtre cre.
SELECT *
FROM T1

247
Il sagit dune table deux lignes et deux colonnes. Les valeurs affiches
dans la colonne pk seront de type binaire.
Pour convertir les valeurs didentificateurs uniques dans un format lisible,
excutez la commande suivante :
SELECT UUIDTOSTR(pk),c1
FROM T1

La fonction UUIDTOSTR nest pas ncessaire pour les bases de donnes


cres avec la version 9.0.2 ou une version ultrieure.

VAR_POP (fonction dagrgat)


Fonction Calcule la variance statistique dun remplissage consistant en une expression
numrique, comme DOUBLE.
Syntaxe VAR_POP ( expression_numrique )

Paramtres expression_numrique Expression dont la variance base sur le


remplissage est calcule sur un ensemble de lignes. Lexpression est
gnralement un nom de colonne.
Utilisation La variance standard base sur le remplissage (s2 ) est calcule selon la
formule suivante :
s2 = (1/N) * SUM( xi - mean( x ) )2
Cette variance ninclut pas de lignes dans lesquelles expression_numrique
a la valeur NULL. La fonction renvoie la valeur NULL si le groupe ne
contient aucune ligne.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Fonction principale/SQL extrieure au langage SQL basique.

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi Fonctions dagrgat la page 96
Exemple Linstruction suivante dresse la liste des moyennes et des variances du
nombre dlments par commande diffrentes poques :
SELECT year( ship_date ) AS Year,
quarter( ship_date ) AS Quarter,
avg( quantity ) AS Average,
var_pop( quantity ) AS Variance
FROM sales_order_items
GROUP BY Year, Quarter
ORDER BY Year, Quarter

248
Chapitre 3. Fonctions SQL

Anne Trimestre Moyenne Variance

2000 1 25.775148 203.9021. . .

2000 2 27.050847 225.8109. . .

... ... ... ...

VAR_SAMP (fonction dagrgat)


Fonction Calcule la variance statistique dun chantillon consistant en une expression
numrique, comme DOUBLE.
Syntaxe VAR_SAMP ( expression_numrique )

Paramtres expression_numrique Expression dont la variance base sur


lchantillon est calcule sur un ensemble de lignes. Lexpression est
gnralement un nom de colonne.
Utilisation La variance (s2 ) est calcule selon la formule suivante, qui suppose une
rpartition normale :
s2 = (1/( N - 1 )) * SUM( xi - mean( x ) )2
Cette variance ninclut pas de lignes dans lesquelles expression_numrique
a la valeur NULL. La fonction renvoie la valeur NULL si le groupe ne
contient aucune ligne.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Fonction principale/SQL extrieure au langage SQL basique.
La syntaxe VARIANCE est une extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi Fonctions dagrgat la page 96
Exemple Linstruction suivante dresse la liste des moyennes et des variances du
nombre dlments par commande diffrentes poques :
SELECT year( ship_date ) AS Year,
quarter( ship_date ) AS Quarter,
avg( quantity ) AS Average,
var_samp( quantity ) AS Variance
FROM sales_order_items
GROUP BY Year, Quarter
ORDER BY Year, Quarter

249
Anne Trimestre Moyenne Variance

2000 1 25.775148 205.1158. . .

2000 2 27.050847 227.0939. . .

... ... ... ...

VARIANCE (fonction dagrgat)


Fonction Alias pour VAR_SAMP. Reportez-vous la section VAR_SAMP (fonction
dagrgat) la page 249.

VAREXISTS (fonction diverse)


Fonction Renvoie 1 si une variable dfinie par un utilisateur a t cre ou dclare
avec un nom donn. Renvoie 0 si aucune variable similaire na t cre.
Syntaxe VAREXISTS ( chane_nom_variable )

Paramtres chane_nom_variable Le nom tester, sous forme de chane.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
Voir aussi Instruction CREATE VARIABLE la page 447
Instruction DECLARE la page 455
Instruction IF la page 540
Exemple Linstruction IF suivante cre une variable avec un nom start_time si aucune
na t cre ou dclare. La variable peut tre utilise de manire sre.
IF VAREXISTS(start_time) = 0 THEN
CREATE VARIABLE start_time TIMESTAMP;
END IF;
SET start_time = current timestamp;

WATCOMSQL (fonction diverse)


Fonction Rcrit une instruction Transact-SQL dans le dialecte Watcom-SQL. Cette
fonction peut tre particulirement utile pour convertir des procdures
stockes Adaptive Server Enterprise en syntaxe Watcom-SQL.
Syntaxe WATCOMSQL ( chane_instruction_sql )

Paramtres chane_instruction_sql Instruction SQL utilise par la fonction pour


dterminer son dialecte.

250
Chapitre 3. Fonctions SQL

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi SQLDIALECT (fonction diverse) la page 234
TRANSACTSQL (fonction diverse) la page 243
Exemple Linstruction suivante renvoie la chane select empl_name as
EmployeeName from employee.
SELECT WATCOMSQL( SELECT EmployeeName=empl_name FROM employee
) FROM dummy

WEEKS (fonction de date et dheure)


Fonction Si deux dates sont indiques, cette fonction renvoie un entier correspondant
au nombre de semaines entre ces deux dates. Dans ce cas, il est prfrable
dutiliser la fonction DATEDIFF (fonction de date et dheure) la
page 136.
Si une seule date est indique, cette fonction renvoie un entier correspondant
au nombre de semaines entre cette date et le 0000-02-29.
Si une date et un entier sont indiqus, cette fonction ajoute le nombre entier
de semaines la date indique. Dans ce cas, il est prfrable dutiliser la
fonction DATEADD (fonction de date et dheure) la page 135.
La syntaxe 1 renvoie un entier. La syntaxe 2 renvoie une estampille.
Syntaxe 1 WEEKS ( [ expression_dateheure, ] expression_dateheure )

Syntaxe 2 WEEKS ( expression_dateheure, expression_entier )

Paramtres expression_dateheure Date et heure.


expression_entier Nombre de semaines ajouter expression_dateheure.
Si la valeur dexpression_entier est ngative, le nombre de semaines
appropri est soustrait de la valeur dateheure. Si vous indiquez une
expression_entier, expression_dateheure doit tre explicitement convertie en
un type de donnes DATETIME.
Pour plus dinformations sur la conversion des types de donnes,
reportez-vous la section CAST (fonction de conversion de types de
donnes) la page 116.
Utilisation La diffrence de deux dates dans les semaines correspond au nombre de
dimanches entre les deux dates.
Normes et compatibilit SQL/92 Extension propritaire.

251
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

Exemple Les instructions suivantes renvoient le rsultat 8, ce qui signifie que la


seconde date est postrieure la premire de huit semaines. Il est conseill
dutiliser le second exemple (DATEDIFF).
SELECT WEEKS( 1999-07-13 06:07:12,
1999-09-13 10:07:12 )
SELECT DATEDIFF( week,
1999-07-13 06:07:12,
1999-09-13 10:07:12 )

Linstruction suivante renvoie le rsultat 104 270 :


SELECT WEEKS( 1998-07-13 06:07:12 )

Linstruction suivante renvoie lestampille 1999-06-16 21:05:07.0 : Il est


conseill dutiliser le second exemple (DATEADD).
SELECT WEEKS( CAST( 1999-05-12 21:05:07
AS TIMESTAMP ), 5)
SELECT DATEADD( week, 1999-05-12 21:05:07 )

XMLAGG (fonction de chane de caractres)


Fonction Gnre une fort dlments XML partir dun ensemble de valeurs XML.
Syntaxe XMLAGG ( expression_valeur [ ORDER BY expression_order_by ],... )

Paramtres expression_valeur Valeur XML. Le contenu nest pas pris en compte,


sauf sil sagit de donnes donnes XML. Lexpression_order_by classe les
lments renvoys par la fonction.
expression_order_by Expression utilise pour classer les lments XML
en fonction de la valeur de cette expression.
Utilisation Les valeurs NULL sont omises du rsultat. Si toutes les entres sont de type
NULL, ou sil ny a aucune ligne, le rsultat est NULL. Si vous souhaitez
obtenir un document XML correctement form, veillez crire votre requte
de telle sorte que le code XML gnr possde un lment racine unique.
Les donnes contenues dans des colonnes BINARY, LONG BINARY,
IMAGE et VARBINARY sont automatiquement renvoyes au format base64
lorsque vous excutez une requte contenant XMLAGG.
Pour un exemple de requte utilisant la fonction XMLAGG avec une
clause ORDER BY, reportez-vous la section Utilisation de la fonction
XMLAGG [ASA - Guide de lutilisateur SQL, page 585].

252
Chapitre 3. Fonctions SQL

Normes et compatibilit Partie de lavant-projet de norme SQL/XML.

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi Utilisation de la fonction XMLAGG [ASA - Guide de lutilisateur SQL,
page 585]

Exemple Linstruction suivante gnre un document XML dcrivant les commandes


mises par chaque client.
SELECT XMLELEMENT( NAME "order",
XMLATTRIBUTES( id AS order_id ),
( SELECT XMLAGG(
XMLELEMENT(
NAME "product",
XMLATTRIBUTES( prod_id,
quantity
AS "quantity_shipped" )
)
)
FROM sales_order_items soi
WHERE soi.id = so.id
)
) AS products_ordered
FROM sales_order so
ORDER BY so.id

XMLCONCAT (fonction de chane de caractres)


Fonction Produit une fort dlments XML.
Syntaxe XMLCONCAT ( valeur_xml,... )

Paramtres valeur_xml Valeurs XML concatner.


Utilisation Gnre une fort dlments XML. Dans un document XML non analys,
une fort dsigne les noeuds racine multiples dans le document. Les valeurs
NULL sont omises du rsultat. Si toutes les valeurs sont de type NULL, un
rsultat NULL est renvoy. XMLCONCAT ne vrifie pas si largument
comporte un prologue. Si vous souhaitez obtenir un document XML
correctement form, veillez crire votre requte de faon ne gnrer
quun seul lment racine.
Le contenu des lments nest jamais pris en compte sauf sil sagit de
donnes XML. Les donnes contenues dans des colonnes BINARY, LONG
BINARY, IMAGE et VARBINARY sont automatiquement renvoyes au
format base64 lorsque vous excutez une requte contenant XMLCONCAT.
Normes et compatibilit Partie de lavant-projet de norme SQL/XML.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi
253
Utilisation de la fonction XMLCONCAT [ASA - Guide de lutilisateur
SQL, page 586]
XMLFOREST (fonction de chane de caractres) la page 255
Exemple La requte suivante gnre des lments <cust_id>, <cust_fname> et
<cust_lname> pour chaque client.
SELECT XMLCONCAT( XMLELEMENT ( NAME cust_id, id ),
XMLELEMENT( NAME cust_fname, fname ),
XMLELEMENT( NAME cust_lname, lname )
) AS "Customer Information"
FROM customer
WHERE id < 120

XMLELEMENT (fonction de chane de caractres)


Fonction Produit un lment XML dans une requte.
Syntaxe XMLELEMENT ( NAME expression_nom_lment
[, XMLATTRIBUTES ( expression_valeur_attribut
[ AS nom_attribut ],... )
[, expression_contenu_lment,... ] )

Paramtres expression_nom_lment Identificateur. Pour chaque ligne, un lment


XML portant le mme nom que lidentificateur est gnr.
expression_valeur_attribut Attribut de llment. Cet argument facultatif
permet dindiquer une valeur dattribut pour llment gnr. Cet argument
spcifie le nom et le contenu de lattribut. Si lexpression_valeur_attribut est
un nom de colonne, lattribut prend par dfaut le nom de la colonne. Vous
pouvez modifier le nom de lattribut en indiquant largument nom_attribut.
expression_contenu_lment Contenu de llment. Il peut sagir dune
expression chane quelconque. Vous pouvez indiquer un nombre illimit
darguments expression_contenu_lment, qui sont alors concatns. Par
exemple :
SELECT XMLELEMENT( NAME x, abc, def )

renvoie
<x>abcdef</x>

Utilisation Les valeurs dlment et dattribut NULL sont omises du rsultat. La casse
des noms dlment et dattribut est issue de la requte.
Le contenu des lments nest jamais pris en compte sauf sil sagit de
donnes XML. Les noms dlment et dattribut incorrects sont galement
mis entre guillemets.

254
Chapitre 3. Fonctions SQL

Pour plus dinformations sur les guillemets et la fonction


XMLELEMENT, reportez-vous la section Noms incorrects et SQL/XML
[ASA - Guide de lutilisateur SQL, page 585].

Les fonctions XMLELEMENT peuvent tre imbriques afin de crer une


hirarchie. Pour renvoyer des lments diffrents au mme niveau de la
hirarchie des documents, utilisez la fonction XMLFOREST.
Pour plus dinformations, reportez-vous la section XMLFOREST
(fonction de chane de caractres) la page 255.
Les donnes contenues dans des colonnes BINARY, LONG BINARY,
IMAGE et VARBINARY sont automatiquement renvoyes au format base64
lorsque vous excutez une requte contenant XMLELEMENT.
Normes et compatibilit Partie de lavant-projet de norme SQL/XML.
Sybase Non prise en charge par Adaptive Server Enterprise.
Voir aussi Utilisation de la fonction XMLELEMENT [ASA - Guide de lutilisateur
SQL, page 587]
XMLFOREST (fonction de chane de caractres) la page 255
Exemple Linstruction suivante gnre un lment <item_name> pour chaque
produit contenu dans le jeu de rsultats, o le nom du produit est le contenu
de llment.
SELECT id, XMLELEMENT( NAME item_name, p.name )
FROM product p
WHERE id > 400

XMLFOREST (fonction de chane de caractres)


Fonction Gnre une fort dlments XML.
Syntaxe XMLFOREST ( expression_contenu_lment [ AS nom_lment ],... )

Paramtres expression_contenu_lment Chane. Un lment est gnr pour


chaque argument expression_contenu_lment qui est dfini. La valeur
expression_contenu_lment devient le contenu de llment. Par exemple,
si vous indiquez la colonne emp_id de la table employee pour cet argument,
un lment <emp_id> contenant une valeur emp_id est gnr pour chaque
valeur de la table.
Indiquez largument nom_lment pour affecter un autre nom que
lexpression_contenu_lment llment ; sinon, celui-ci prend par dfaut
le nom expression_contenu_lment.
Utilisation Produit une fort dlments XML. Dans le document XML non analys,
une fort dsigne les noeuds racine multiples dans le document. Lorsque

255
tous les arguments de XMLFOREST sont NULL, une valeur NULL est
renvoye. Si quelques valeurs seulement sont NULL, elles sont omises du
rsultat. Le contenu des lments est toujours plac entre guillemets, sauf si
le type de donnes est XML. Vous ne pouvez pas indiquer dattributs avec
XMLFOREST. Utilisez la fonction XMLELEMENT si vous souhaitez
dfinir des attributs pour les lments gnrs.
Pour plus dinformations sur la fonction XMLELEMENT, reportez-vous
la section XMLELEMENT (fonction de chane de caractres) la
page 254.
Les noms dlment ne sont pas pris en compte, sauf sil sagit de donnes
XML.
Si vous souhaitez obtenir un document XML correctement form, veillez
crire votre requte de faon ne gnrer quun seul lment racine.
Les donnes contenues dans des colonnes BINARY, LONG BINARY,
IMAGE et VARBINARY sont automatiquement renvoyes au format base64
lorsque vous excutez une requte contenant XMLFOREST.
Normes et compatibilit Partie de lavant-projet de norme SQL/XML.
Sybase Non prise en charge par Adaptive Server Enterprise.

Voir aussi Utilisation de la fonction XMLFOREST [ASA - Guide de lutilisateur


SQL, page 589]
XMLELEMENT (fonction de chane de caractres) la page 254
XMLCONCAT (fonction de chane de caractres) la page 253
Exemple Linstruction suivante produit un lment XML pour le prnom et le nom de
chaque employ.
SELECT emp_id,
XMLFOREST( emp_fname, emp_lname
) AS "Employee Name"
FROM employee

XMLGEN (fonction de chane de caractres)


Fonction Gnre une valeur XML reposant sur un constructeur XQuery.
Syntaxe XMLGEN ( constructeur_xquery , expression_contenu [ AS nom_variable ],... )

Paramtres constructeur_xquery Constructeur XQuery. Il sagit dun lment dfini


dans le langage XQuery. Il donne une syntaxe permettant de construire des
lments XML reposant sur des expressions XQuery. Largument
constructeur_xquery doit tre un document XML correctement form, avec
une ou plusieurs rfrences de variable. Une rfrence de variable est place

256
Chapitre 3. Fonctions SQL

entre accolades et doit tre prfixe par un caractre $, sans espace autour.
Exemple :
SELECT XMLGEN(<a>{$x}</a>, 1 AS x)

expression_contenu Variable. Vous pouvez dfinir plusieurs arguments


expression_contenu. Largument nom_variable est utilis pour nommer la
variable. Par exemple :
SELECT XMLGEN( <emp emp_id="{$emp_id}"><start_date>{$x}
</start_date></emp>,
emp_id,
start_date AS x
)
FROM employee

Utilisation Les constructeurs calculs dfinis dans la spcification XQuery ne sont pas
pris en charge par XMLGEN.
Lorsque vous excutez une requte contenant XMLGEN, les donnes
contenues dans des colonnes BINARY, LONG BINARY, IMAGE et
VARBINARY sont automatiquement renvoyes au format base64.
Le contenu des lments nest jamais pris en compte sauf sil sagit de
donnes XML. Les noms dlment et dattribut XML incorrects ne sont
galement pas pris en comtpe.
Pour plus dinformations sur les lments non pris en compte et la
fonction XMLGEN, reportez-vous la section Noms incorrects et
SQL/XML [ASA - Guide de lutilisateur SQL, page 585].
Normes et compatibilit Partie de lavant-projet de norme SQL/XML.

Sybase Non prise en charge par Adaptive Server Enterprise.


Voir aussi Utilisation de la fonction XMLGEN [ASA - Guide de lutilisateur SQL,
page 590]

Exemple Lexemple suivant gnre un lment <emp>, ainsi que des lments
<last_name>, <first_name> et <start_date> pour chaque employ.
SELECT XMLGEN ( <emp emp_id="{$emp_id}">
<last_name>="{$emp_lname}"</last_name>
<first_name>="{$emp_fname}"</first_name>
<start_date>="{$start_date}"</start_date>
</emp>,
emp_id,
emp_lname,
emp_fname,
start_date
) AS employee_list
FROM employee

257
YEAR (fonction de date et dheure)
Fonction Prend comme paramtre une valeur timestamp et renvoie lanne spcifie
par ce timestamp sous forme de valeur courte.
Syntaxe YEAR ( expression_dateheure )

Paramtres expression_dateheure Date, heure ou timestamp.


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Exemple Lexemple suivant renvoie la valeur 2001.
SELECT YEAR ( 2001-09-12)

YEARS (fonction de date et dheure)


Fonction Si deux dates sont indiques, cette fonction renvoie le nombre entier
dannes entre ces deux dates. Dans ce cas, il est prfrable dutiliser la
fonction DATEDIFF (fonction de date et dheure) la page 136.
Si une seule date est indique, elle renvoie lanne. Dans ce cas, il est
prfrable dutiliser la fonction DATEPART (fonction de date et dheure)
la page 139.
Si une date et un entier sont indiqus, cette fonction ajoute le nombre entier
dannes la date indique. Dans ce cas, il est prfrable dutiliser la
fonction DATEADD (fonction de date et dheure) la page 135.
La syntaxe 1 renvoie un entier. La syntaxe 2 renvoie une estampille.
Syntaxe 1 YEARS ( [ expression_dateheure, ] expression_dateheure )

Syntaxe 2 YEARS ( expression_dateheure, expression_entier )

Paramtres expression_dateheure Date et heure.


expression_entier Nombre dannes ajouter expression_dateheure. Si
la valeur dexpression_entier est ngative, le nombre dannes appropri est
soustrait de la date. Si vous indiquez une expression_entier,
expression_dateheure doit tre explicitement convertie en un type de
donnes DATETIME.
Pour plus dinformations sur la conversion des types de donnes,
reportez-vous la section CAST (fonction de conversion de types de

258
Chapitre 3. Fonctions SQL

donnes) la page 116.


Utilisation La valeur de YEARS est calcule partir du nombre de premiers jours de
lanne compris entre les deux dates.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Les instructions suivantes renvoient lune et lautre le rsultat 4 :
SELECT YEARS( 1998-07-13 06:07:12,
1994-03-13 08:07:13 )
SELECT DATEDIFF( year,
1998-07-13 06:07:12,
1994-03-13 08:07:13 )

Les instructions suivantes renvoient 1998 :


SELECT YEARS( 1998-07-13 06:07:12 )
SELECT DATEPART( year, 1998-07-13 06:07:12 )

Les instructions suivantes renvoient la date indique, avance de 300 ans :


SELECT YEARS(
CAST( 1998-07-13 06:07:12 AS TIMESTAMP ),
300 )
SELECT DATEADD( year, 300,
1998-07-13 06:07:12 )

YMD (fonction de date et dheure)


Fonction Renvoie une valeur de date correspondant lanne, au mois et au jour du
mois indiqus. Les valeurs sont de petits nombres entiers compris entre
32768 et 32767.
Syntaxe YMD (
expression_entier ,
expression_entier ,
expression_entier )

Paramtres expression_entier Anne.


expression_entier Numro du mois. Si le mois nappartient pas
lintervalle 1-12, lanne est ajuste en consquence.
expression_entier Numro du jour. Il peut sagir de nimporte quel entier,
la date tant ajuste en consquence.
Normes et compatibilit SQL/92 Extension propritaire.

259
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise

Exemple Linstruction suivante renvoie le rsultat 1998-06-12 :


SELECT YMD( 1998, 06, 12 )

Si les valeurs ne font pas partie de lintervalle standard, la date est ajuste en
consquence. Par exemple, linstruction suivante renvoie le rsultat
2000-03-01 :
SELECT YMD( 1999, 15, 1 )

260
CHAPITRE 4

Instructions SQL

Prsentation Ce chapitre prsente des descriptions dtailles des instructions SQL, dans
lordre alphabtique.
Sommaire Sujet : page

Conventions utilises pour les instructions SQL 269

Instruction ALLOCATE DESCRIPTOR [ESQL] 273

Instruction ALTER DATABASE 275

Instruction ALTER DBSPACE 280

Instruction ALTER DOMAIN 282

Instruction ALTER EVENT 283

Instruction ALTER FUNCTION 285

Instruction ALTER INDEX 286

Instruction ALTER PROCEDURE 288

Instruction ALTER PUBLICATION 290

Instruction ALTER REMOTE MESSAGE TYPE [SQL Remote] 292


Instruction ALTER SERVER 294

Instruction ALTER SERVICE 297

Instruction ALTER SYNCHRONIZATION SUBSCRIPTION 301


[MobiLink]

Instruction ALTER SYNCHRONIZATION USER [MobiLink] 303

Instruction ALTER TABLE 305


Instruction ALTER TRIGGER 313

Instruction ALTER VIEW 315

Instruction ALTER WRITEFILE (dconseille) 317

Instruction BACKUP 319

Instruction BEGIN 324

261
Sujet : page

Instruction BEGIN TRANSACTION 327

Instruction CALL 330

Instruction CASE 332

Instruction CHECKPOINT 335

Instruction CLEAR [Interactive SQL] 336

Instruction CLOSE [ESQL] [SP] 337

Instruction COMMENT 339

Instruction COMMIT 341

Instruction CONFIGURE [Interactive SQL] 343


Instruction CONNECT [ESQL] [Interactive SQL] 344

Instruction CREATE COMPRESSED DATABASE (dconseille) 348

Instruction CREATE DATABASE 350

Instruction CREATE DBSPACE 357

Instruction CREATE DECRYPTED FILE 359

Instruction CREATE DOMAIN 360

Instruction CREATE ENCRYPTED FILE 362

Instruction CREATE EVENT 364

Instruction CREATE EXISTING TABLE 371


Instruction CREATE EXTERNLOGIN 374

Instruction CREATE FUNCTION 376

Instruction CREATE INDEX 383

Instruction CREATE MESSAGE [T-SQL] 388

Instruction CREATE PROCEDURE 390

Instruction CREATE PROCEDURE [T-SQL] 400

Instruction CREATE PUBLICATION 402

Instruction CREATE REMOTE MESSAGE TYPE [SQL Remote] 405

Instruction CREATE SCHEMA 407


Instruction CREATE SERVER 409

262
Chapitre 4. Instructions SQL

Sujet : page

Instruction CREATE SERVICE 412

Instruction CREATE STATISTICS 416

Instruction CREATE SUBSCRIPTION [SQL Remote] 417

Instruction CREATE SYNCHRONIZATION SUBSCRIPTION 419


[MobiLink]

Instruction CREATE SYNCHRONIZATION USER [MobiLink] 422

Instruction CREATE TABLE 425

Instruction CREATE TRIGGER 438

Instruction CREATE TRIGGER [SQL Remote] 443

Instruction CREATE TRIGGER [T-SQL] 446


Instruction CREATE VARIABLE 447

Instruction CREATE VIEW 448

Instruction CREATE WRITEFILE (dconseille) 450

Instruction DEALLOCATE 452

Instruction DEALLOCATE DESCRIPTOR [ESQL] 453


Section de dclaration [ESQL] 454

Instruction DECLARE 455

Instruction DECLARE CURSOR [ESQL] [SP] 456

Instruction DECLARE CURSOR [T-SQL] 461


Instruction DECLARE LOCAL TEMPORARY TABLE 463

Instruction DELETE 465

Instruction DELETE (positionne) [ESQL] [SP] 467

Instruction DESCRIBE [ESQL] 469

Instruction DISCONNECT [ESQL] [Interactive SQL] 473


Instruction DROP 474

Instruction DROP DATABASE 476

Instruction DROP CONNECTION 477

Instruction DROP EXTERNLOGIN 478

263
Sujet : page

Instruction DROP PUBLICATION 479

Instruction DROP REMOTE MESSAGE TYPE [SQL Remote] 480

Instruction DROP SERVER 481

Instruction DROP SERVICE 482

Instruction DROP STATEMENT [ESQL] 483

Instruction DROP STATISTICS 484

Instruction DROP SUBSCRIPTION [SQL Remote] 485

Instruction DROP SYNCHRONIZATION SUBSCRIPTION [Mo- 486


biLink]

Instruction DROP SYNCHRONIZATION USER [MobiLink] 487


Instruction DROP VARIABLE 488

Opration EXCEPT 489

Instruction EXECUTE [ESQL] 491

Instruction EXECUTE [T-SQL] 493

Instruction EXECUTE IMMEDIATE [SP] 495


Instruction EXIT [Interactive SQL] 498

Instruction EXPLAIN [ESQL] 500

Instruction FETCH [ESQL] [SP] 502

Instruction FOR 507


Instruction FORWARD TO 509

Clause FROM 511

Instruction GET DATA [ESQL] 518

Instruction GET DESCRIPTOR [ESQL] 520

Instruction GET OPTION [ESQL] 522


Instruction GOTO [T-SQL] 523

Instruction GRANT 524

Instruction GRANT CONSOLIDATE [SQL Remote] 529

Instruction GRANT PUBLISH [SQL Remote] 531

264
Chapitre 4. Instructions SQL

Sujet : page

Instruction GRANT REMOTE [SQL Remote] 532

Instruction GRANT REMOTE DBA [SQL Remote] 534

Clause GROUP BY 535

Instruction HELP [Interactive SQL] 539

Instruction IF 540

Instruction IF [T-SQL] 542

Instruction INCLUDE [ESQL] 544

Instruction INPUT [Interactive SQL] 545

Instruction INSERT 551


Instruction INSTALL JAVA 555

Opration INTERSECT 558

Instruction LEAVE 560

Instruction LOAD STATISTICS 562

Instruction LOAD TABLE 563

Instruction LOCK TABLE 572

Instruction LOOP 574

Instruction MESSAGE 575

Instruction OPEN [ESQL] [SP] 579


Instruction OUTPUT [Interactive SQL] 582

Instruction PARAMETERS [Interactive SQL] 587

Instruction PASSTHROUGH [SQL Remote] 588

Instruction PREPARE [ESQL] 589

Instruction PREPARE TO COMMIT 592

Instruction PRINT [T-SQL] 593

Instruction PUT [ESQL] 594

Instruction RAISERROR [T-SQL] 596

Instruction READ [Interactive SQL] 598


Instruction READTEXT [T-SQL] 600

265
Sujet : page

Instruction RELEASE SAVEPOINT 601

Instruction REMOTE RESET [SQL Remote] 602

Instruction REMOTE JAVA 603

Instruction REORGANIZE TABLE 604

Instruction RESIGNAL 607

Instruction RESTORE DATABASE 608

Instruction RESUME 610

Instruction RETURN 611

Instruction REVOKE 613


Instruction REVOKE CONSOLIDATE [SQL Remote] 616

Instruction REVOKE PUBLISH [SQL Remote] 617

Instruction REVOKE REMOTE [SQL Remote] 619

Instruction REVOKE REMOTE DBA [SQL Remote] 620

Instruction ROLLBACK 621

Instruction ROLLBACK TO SAVEPOINT 622

Instruction ROLLBACK TRANSACTION 623

Instruction ROLLBACK TRIGGER 624

Instruction SAVE TRANSACTION 625


Instruction SAVEPOINT 626

Instruction SELECT 627

Instruction SET 635

Instruction SET [T-SQL] 637

Instruction SET CONNECTION [Interactive SQL] [ESQL] 641

Instruction SET DESCRIPTOR [ESQL] 642

Instruction SET OPTION 644

Instruction SET OPTION [Interactive SQL] 647

Instruction SET REMOTE OPTION [SQL Remote] 648


Instruction SET SQLCA [ESQL] 650

266
Chapitre 4. Instructions SQL

Sujet : page

Instruction SETUSER 652

Instruction SIGNAL 654

Instruction START DATABASE [Interactive SQL] 655

Instruction START ENGINE [Interactive SQL] 657

Instruction START JAVA 658

Instruction START LOGGING [Interactive SQL] 659

Instruction START SUBSCRIPTION [SQL Remote] 660

Instruction START SYNCHRONIZATION DELETE [MobiLink] 662

Instruction STOP DATABASE 664


Instruction STOP ENGINE 665

Instruction STOP JAVA 666

Instruction STOP LOGGING [Interactive SQL] 667

Instruction STOP SUBSCRIPTION [SQL Remote] 668

Instruction STOP SYNCHRONIZATION DELETE [MobiLink] 669

Instruction SYNCHRONIZE SUBSCRIPTION [SQL Remote] 671

Instruction SYSTEM [Interactive SQL] 672

Instruction TRIGGER EVENT 673

Instruction TRUNCATE TABLE 674


Opration UNION 676

Instruction UNLOAD 678

Instruction UNLOAD TABLE 680

Instruction UPDATE 683

Instruction UPDATE (positionne) [ESQL] [SP] 688

Instruction UPDATE [SQL Remote] 690

Instruction VALIDATE CHECKSUM 693

Instruction VALIDATE INDEX 694

Instruction VALIDATE TABLE 695


Instruction WAITFOR 697

267
Sujet : page

Instruction WHENEVER [ESQL] 699

Instruction WHILE [T-SQL] 700

Instruction WRITETEXT [T-SQL] 701

268
Chapitre 4. Instructions SQL

Conventions utilises pour les instructions SQL


Cette section dcrit les conventions utilises pour la description des
instructions SQL.

Elments communs dans la syntaxe SQL


Cette section rpertorie les diffrents lments de langage communs dans la
syntaxe de nombreuses instructions SQL.
Pour plus dinformations sur les lments dcrits dans cette section,
reportez-vous aux sections Identificateurs la page 8, Types de donnes
SQL la page 55, Conditions de recherche la page 24, Expressions
la page 17 et Chanes la page 10.
nom_colonne Identificateur reprsentant un nom de colonne.
condition Expression pouvant prendre les valeurs TRUE (VRAIE),
FALSE (FAUSSE) ou UNKNOWN (INCONNUE).
nom_connexion Chane reprsentant un nom de connexion active.

type_donnes Type de donnes de stockage.


expression Une expression.
nom_fichier Chane contenant un nom de fichier.

var_hte Variable en langage C dclare en tant que variable hte et


prcde de deux-points (:). Pour plus dinformations, reportez-vous la
section Utilisation des variables htes [ASA - Guide de programmation,
page 166].

variable_indicateur Seconde variable hte du type short int situe


immdiatement aprs une variable hte normale. Elle doit tre prcde
de deux-points (:). Les variables indicateur permettent de transfrer des
valeurs NULL vers ou depuis la base de donnes.
nombre Toute squence de chiffres, ventuellement suivie dune partie
dcimale et prcde du signe moins (-). Le nombre peut, le cas chant,
tre suivi de la lettre E et dun exposant. Par exemple :
42
-4.038
.001
3.4e10
1e-10

269
propritaire Identificateur reprsentant lID utilisateur propritaire dun
objet de base de donnes.

nom_rle Identificateur reprsentant le nom de rle dune cl trangre.


nom_pointdesauvegarde Identificateur reprsentant un nom de point
de sauvegarde.
condition_recherche Condition pouvant prendre les valeurs TRUE
(VRAIE), FALSE (FAUSSE) ou UNKNOWN (INCONNUE).

valeur_spciale Une des valeurs spciales dcrites dans Valeurs


spciales la page 35.

tiquette_instruction Identificateur reprsentant ltiquette dune


boucle ou dune instruction compose.

liste_tables Liste de noms de tables pouvant comporter des noms


dalias.
Pour plus dinformations, reportez-vous la section Clause FROM
la page 511.

nom_table Identificateur reprsentant le nom dune table.


id_utilisateur Identificateur reprsentant un nom dutilisateur.
nom_variable Identificateur reprsentant un nom de variable.

Conventions syntaxiques
Les exemples de syntaxe SQL sappuient sur les conventions suivantes :
Mots-cls Tous les mots-cls SQL sont indiqus en majuscules, comme
ALTER TABLE dans linstruction SQL suivants :
ALTER TABLE [ propritaire.]nom_table

Marques de rservation Les lments remplacer par des expressions


ou des identificateurs appropris apparaissent en italique. Par exemple :
ALTER TABLE [ propritaire.]nom_table

Elments facultatifs Les lments facultatifs dune instruction sont


placs entre crochets.
RELEASE SAVEPOINT [ nom_pointdesauvegarde ]

Les crochets indiquent que le paramtre nom_point_de_sauvegarde est


facultatif. Les crochets ne doivent pas tre saisis.

270
Chapitre 4. Instructions SQL

Elments rptitifs Tout lment qui peut se rpter est suivi du


sparateur de liste correspondant et de points de suspension, comme
contrainte_colonne dans lexemple suivant :
ADD dfinition_colonne [ contrainte_colonne, . . . ]

La spcification dune contrainte de colonne est facultative. Vous pouvez


en spcifier une ou plusieurs. Dans ce dernier cas, les lments sont
spars par une virgule (,).
Options Lorsquun seul lment de la liste (ou aucun) doit tre dclar,
les lments sont spars par des barres verticales et la liste est place
entre crochets.
[ ASC | DESC ]

Vous pouvez par exemple choisir le paramtre ASC ou DESC, ou aucun


des deux. Les crochets ne doivent pas tre saisis.
Options obligatoires Lorsque vous devez obligatoirement spcifier une
valeur, les choix possibles sont placs entre accolades.
[ QUOTES { ON | OFF } ]

Dans ce cas, si vous optez pour loption QUOTES, ON ou OFF doit tre
spcifi. Les crochets et accolades ne doivent pas tre saisis.

Indicateurs de contexte de linstruction


Certains noms dinstructions sont suivis dun indicateur entre crochets qui
spcifie dans quel contexte linstruction peut tre utilise. Ces indicateurs
sont les suivants :
[ESQL] Linstruction doit tre utilise dans Embedded SQL.
[Interactive SQL] Linstruction ne peut tre utilise que dans
Interactive SQL.
[SP] Linstruction est destine tre utilise dans des procdures
stockes, des triggers ou des batchs.
[T-SQL] Linstruction a t conue pour tre compatible avec Adaptive
Server Enterprise. Dans certains cas, linstruction nest pas utilisable
dans des procdures stockes qui ne sont pas au format Transact-SQL.
Dans dautres cas, il est conseill dutiliser dautres instructions, plus
proches du standard SQL/92, moins que la compatibilit Transact-SQL
ne constitue une priorit.
[MobiLink] Linstruction ne doit tre utilise que dans les clients
MobiLink.

271
[Interactive SQL] Linstruction ne peut tre utilise que dans SQL
Remote.

Si deux paires de crochets sont utilises, linstruction peut tre utilise dans
les deux environnements. Par exemple, [ESQL][SP] signifie quune
instruction peut tre utilise la fois dans Embedded SQL et dans des
procdures stockes.

272
Chapitre 4. Instructions SQL

Instruction ALLOCATE DESCRIPTOR [ESQL]


Description Allouer de lespace une zone descripteur SQL (SQLDA).
Syntaxe ALLOCATE DESCRIPTOR nom_descripteur
[ WITH MAX { entier | var_hte } ]

nom_descripteur : chane

Paramtres Clause WITH MAX Permet de spcifier le nombre de variables au sein de


la zone descripteur. Le nombre par dfaut est un. Vous devez toujours
appeler fill_sqlda pour allouer de lespace aux lments de donnes avant
deffectuer une lecture ou dexcuter toute instruction qui accde aux
donnes dans une zone descripteur.
Utilisation Linstruction ALLOCATE DESCRIPTOR alloue de lespace une SQLDA.
Avant dutiliser cette instruction, vous devez dclarer la ligne suivante dans
votre code C :
struct sqlda * descriptor_name

Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction DEALLOCATE DESCRIPTOR [ESQL] la page 453
Zone descripteur SQL (SQLDA) [ASA - Guide de programmation,
page 195]

Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.


SQL/99 Fonction principale.
Sybase Pris en charge par Open Client/Open Server.
Exemple Le programme exemple suivant comprend un exemple dutilisation de
linstruction ALLOCATE DESCRIPTOR :

273
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
EXEC SQL INCLUDE SQLCA;
#include <sqldef.h>
EXEC SQL BEGIN DECLARE SECTION;
int x;
short type;
int numcols;
char string[100];
a_SQL_statement_number stmt = 0;
EXEC SQL END DECLARE SECTION;
int main(int argc, char * argv[]){
struct sqlda * sqlda1;
if( !db_init( &sqlca ) ) {
return 1;
}
db_string_connect( &sqlca,
"UID=DBA;PWD=SQL;DBF=d:\\DB Files\\sample.db");
EXEC SQL ALLOCATE DESCRIPTOR sqlda1 WITH MAX 25;
EXEC SQL PREPARE :stmt FROM
SELECT * FROM employee;
EXEC SQL DECLARE curs CURSOR FOR :stmt;
EXEC SQL OPEN curs;
EXEC SQL DESCRIBE :stmt into sqlda1;
EXEC SQL GET DESCRIPTOR sqlda1 :numcols=COUNT;
// how many columns?
if( numcols > 25 ) {
// reallocate if necessary
EXEC SQL DEALLOCATE DESCRIPTOR sqlda1;
EXEC SQL ALLOCATE DESCRIPTOR sqlda1
WITH MAX :numcols;
EXEC SQL DESCRIBE :stmt into sqlda1;
}
type = DT_STRING; // change the type to string
EXEC SQL SET DESCRIPTOR sqlda1 VALUE 2 TYPE = :type;
fill_sqlda( sqlda1 );
// allocate space for the variables
EXEC SQL FETCH ABSOLUTE 1 curs
USING DESCRIPTOR sqlda1;
EXEC SQL GET DESCRIPTOR sqlda1
VALUE 2 :string = DATA;
printf("name = %s", string );
EXEC SQL DEALLOCATE DESCRIPTOR sqlda1;
EXEC SQL CLOSE curs;
EXEC SQL DROP STATEMENT :stmt;
db_string_disconnect( &sqlca, "" );
db_fini( &sqlca );
return 0;
}

274
Chapitre 4. Instructions SQL

Instruction ALTER DATABASE


Description Mettre niveau une base de donnes cre partir des versions prcdentes
du logiciel ou ajouter le support Java ou jConnect dans une base de donnes.
Syntaxe 1 ALTER DATABASE
[ UPGRADE [ JAVA { ON | OFF | JDK { 1.1.8 | 1.3 } } ]
[ JCONNECT { ON | OFF } ]
| REMOVE JAVA ]

Syntaxe 2 ALTER DATABASE


{ CALIBRATE [ SERVER ]
| CALIBRATE DBSPACE nom_dbspace
| CALIBRATE DBSPACE TEMPORARY
| RESTORE DEFAULT CALIBRATION
}

Syntaxe 3 ALTER DATABASE dbfile


MODIFY [ TRANSACTION ] LOG
{ { OFF | ON } { nom_journal | nom_journal MIRROR nom_miroir | MIRROR
nom_miroir } }
[ KEY cl ]

Paramtres Clause JAVA Gre le support Java dans la base de donnes mise niveau.
Spcifiez JAVA ON pour activer le support Java dans la base de donnes
en ajoutant dans les tables systme des entres pour les classes
dexcution Java de Sybase par dfaut. Si Java dans la base de donnes
est dj install, mais quil sagit dune version antrieure aux classes par
dfaut, il est mis niveau vers les classes courantes par dfaut. Les
classes par dfaut sont les classes JDK 1.3.

Spcifiez JAVA OFF pour empcher lajout de Java dans la base de


donnes aux bases de donnes sur lesquelles il nest pas encore install.
Pour les bases de donnes sur lesquelles Java dans la base de donnes est
dj install, JAVA OFF ne supprime pas le support Java : la version
courante de Java est conserve. Si vous souhaitez supprimer Java dans la
base de donnes, utilisez la clause REMOVE JAVA.

Spcifiez JAVA JDK 1.1.8 ou JAVA JDK 1.3 pour installer


explicitement le support de la version nomm du JDK. Vous pouvez
mettre niveau votre base de donnes vers une version ultrieure de JDK,
et non linverse.
Les classes JDK 1.1.8 se trouvent dans le fichier java\1.1\classes.zip, sous
le rpertoire SQL Anywhere. Pour JDK 1.3, elles se trouvent dans
java\1.3\rt.jar.
La valeur par dfaut est JAVA OFF.

275
Si vous ajoutez Java dans la base de donnes, vous devez redmarrer la base
de donnes pour pouvoir lutiliser.
Pour plus dinformations, reportez-vous la section Prsentation de
Java dans la base de donnes [ASA - Guide de programmation, page 55].

Option sous licence spare requise


Java dans la base de donnes est un composant faisant lobjet dune licence
spare.
Pour commander ce composant, reportez-vous la section Compo-
sants sous licence spare [Prsentation de SQL Anywhere Studio, page 5].
Clause JCONNECT Pour accder aux informations du catalogue systme
via le gestionnaire JDBC jConnect de Sybase, installez le support
JCONNECT ON. Pour exclure les objets systme jConnect, spcifiez
JCONNECT OFF. Vous pouvez utiliser JDBC tant que vous ne lisez pas les
informations systme. Par dfaut, le support jConnect est inclus
(JCONNECT ON).
La dfinition de JCONNECT OFF ne supprime pas le support jConnect
dune base de donnes.
Clause REMOVE JAVA Supprime dune base de donnes le composant
Java dans la base de donnes. Cette opration a pour effet de laisser la base
de donnes telle quelle aurait t cre avec JAVA OFF. Java dans la base de
donnes ne doit pas tre en cours dutilisation lorsque linstruction est mise.
Avant dexcuter cette instruction, vous devez supprimer toutes les classes
Java de la base de donnes. Linstruction ne supprime pas les procdures
stockes ni les triggers qui rfrencent les objets Java ; la prsence de ces
objets ne dclenche aucune erreur dans linstruction ALTER DATABASE.
Utilisation Syntaxe 1 Vous pouvez utiliser linstruction ALTER DATABASE la
place de lutilitaire Mise niveau dune base de donnes pour mettre
niveau une base de donnes. Aprs avoir utilis ALTER DATABASE
UPGRADE, narrtez pas la base de donnes. (Lutilitaire de mise niveau
effectue cette opration automatiquement.)

Sauvegarde avant la mise niveau


Comme avec nimporte quelle mise niveau logicielle, sauvegardez votre
base de donnes avant de commencer.
ALTER DATABASE peut tre utilise pour mettre niveau des bases de
donnes cres avec des versions antrieures du logiciel. Cela sappliquant
galement la mise niveau des versions de maintenance, vous pouvez
mettre niveau une base de donnes cre avec la version 7.0.2 vers la
version 7.0.3 grce linstruction ALTER DATABASE dans la version 7.0.3

276
Chapitre 4. Instructions SQL

du logiciel.
En gnral, les modifications apportes aux bases de donnes entre des
versions mineures se limitent des options supplmentaires et des
changements minimes de table systme.
Lorsquelle est utilise pour mettre niveau une base de donnes,
linstruction ALTER DATABASE opre les modifications suivantes :
Mise niveau des tables systme vers la version actuelle.
Ajout de nouvelles options de base de donnes.
Suppression et recration de toutes les procdures stockes du systme.
Vous pouvez galement utiliser ALTER DATABASE simplement pour
ajouter dans la base de donnes des fonctionnalits Java ou jConnect si la
base de donnes a t cre avec la version actuelle du logiciel.
Pour plus dinformations sur lajout du support Java, reportez-vous la
section Configuration de la base de donnes pour Java [ASA - Guide de
programmation, page 95]. Pour plus dinformations sur lajout du support
jConnect dans une base de donnes Version 6, reportez-vous la section
Installation des objets systme jConnect dans une base de donnes [ASA -
Guide de programmation, page 121].

Toutes les fonctionnalits ne sont pas disponibles


Les fonctionnalits qui ncessitent une rorganisation physique du fichier
de base de donnes sont rendues inaccessibles par ALTER DATABASE.
Parmi ces fonctionnalits, figurent les amliorations apportes lindexa-
tion et les modifications dans le stockage des donnes. Pour tirer profit de
ces amliorations, vous devez dcharger puis recharger la base de donnes.
Pour plus dinformations, reportez-vous la section Reconstruction dune
base de donnes [ASA - Guide de lutilisateur SQL, page 624].
Syntaxe 2 Vous pouvez galement utiliser dALTER DATABASE pour
rtalonner le modle destimation des cots dE/S utilis par loptimiseur.
Le modle DTT (Disk Transfer Time), qui est le modle mathmatique des
E/S disque utilis par le modle destimation des cots, est alors mis jour.
En mode dexploitation normal, le modle destimation des cots utilise un
modle DTT par dfaut prdfini. Ce modle par dfaut a t conu pour du
matriel et une configuration classiques. Dans les rares cas o vous utilisez
du matriel spcialis, comme des disques non standard et o vous avez des
problmes de performances, il peut tre utile de remplacer le modle par
dfaut par un modle reposant sur votre configuration particulire. Toutefois,
il est gnralement conseill de conserver le modle par dfaut.

277
Lorsque vous rtalonnez le modle destimation des cots dE/S, le serveur
nest disponible pour aucune autre opration. Dautre part, il est essentiel de
mettre en veille les autres activits de lordinateur. Le rtalonnage du
serveur est une opration coteuse pouvant prendre un certain temps.
Lorsque vous utilisez largument CALIBRATE [SERVER], tous les
dbspaces sont talonns, lexception du dbspace temporaire. Pour
ltalonner, utilisez CALIBRATE TEMPORARY DBSPACE. Pour
ntalonner quun seul dbspace, utilisez CALIBRATE DBSPACE
nom_dbspace. Pour restaurer le modle DTT par dfaut, utilisez RESTORE
DEFAULT CALIBRATION.
Syntaxe 3 Vous pouvez utiliser linstruction ALTER DATABASE pour
modifier les noms du journal de transactions et du miroir associs une base
de donnes. Ces modifications sont identiques celles queffectue lutilitaire
du Journal de transactions (dblog). Vous pouvez excuter cette instruction
lorsque vous tes connect la base de donnes de lutilitaire ou une autre
base de donnes, en fonction du paramtrage de loption -gu. Si vous
modifiez le journal de transactions ou le fichier miroir dune base de donnes
crypte, vous devez spcifier une cl.
Autorisations Vous devez dtenir les droits DBA et tre le seul connect la base de
donnes.
Concernant REMOVE JAVA, Java dans la base de donnes ne doit pas tre
en cours dutilisation lorsque linstruction est mise.
ALTER DATABASE UPGRADE nest pas support sous Windows CE.

Option sous licence spare requise


Java dans la base de donnes est un composant faisant lobjet dune licence
spare.
Pour commander ce composant, reportez-vous la section Compo-
sants sous licence spare [Prsentation de SQL Anywhere Studio, page 5].
Effets secondaires Commit automatique
Voir aussi Instruction CREATE DATABASE la page 350
Utilitaire de mise niveau dune base de donnes [ASA - Guide
dadministration, page 653]
Instruction CREATE STATISTICS la page 416
Utilitaire de gestion des journaux de transactions [ASA - Guide
dadministration, page 633]
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.

278
Chapitre 4. Instructions SQL

Sybase Non support par Adaptive Server Enterprise.


Exemple Lexemple suivant met niveau une base de donnes pour activer les
oprations Java :
ALTER DATABASE UPGRADE
JAVA ON

Lexemple suivant attribue le nom newdemo.log au journal de transactions


associ la base de donnes asademo.db :
ALTER DATABASE asademo.db
MODIFY LOG ON newdemo.log

279
Instruction ALTER DBSPACE
Description Utilisez cette instruction soit pour rserver de lespace pour un dbspace ou
pour le journal de transactions, soit lorsquun fichier de base de donnes a
t renomm ou dplac.
Syntaxe ALTER DBSPACE { nom_dbspace | TRANSLOG | TEMPORARY }
{ ADD nombre [ PAGES | KB | MB | GB | TB ]
| RENAME chane_nom_fichier }

Paramtres TRANSLOG Vous fournissez le nom dbspace spcial TRANSLOG pour


rserver de lespace disque au journal de transactions. La rservation
amliore les performances si le journal de transactions est cens crotre
rapidement. Vous pouvez utiliser cette fonctionnalit si vous grez
dimportants volumes dobjets binaires de grande taille (BLOBs), tels que
les bitmaps.
TEMPORARY Vous fournissez le nom dbspace spcial TEMPORARY
pour ajouter de lespace dans les dbspaces temporaires. Lorsque de lespace
est ajout dans un dbspace temporaire, lespace supplmentaire se
matrialise immdiatement dans le fichier temporaire correspondant. La
rservation despace pour le dbspace temporaire dune base de donnes peut
amliorer les performances au cours de lexcution de requtes complexes
qui utilisent des tables de travail volumineuses.
Clause ADD Linstruction ALTER DBSPACE incluant la clause ADD
rserve de lespace disque pour un dbspace. En fonction de ce qui a t
spcifi, elle augmente la taille du fichier de base de donnes correspondant
en pages, en kilo-octets (Ko), en mga-octets (Mo), en giga-octets (Go) ou
en tra-octets (To). Si vous ne spcifiez pas dunit, PAGES est le paramtre
par dfaut. La taille de page dune base de donnes est fixe lors de sa
cration.
Si aucun espace nest rserv, les fichiers de base de donnes augmentent
denviron 256 Ko la fois pour les tailles de page de 1 Ko, 2 Ko, 4 Ko et 8
Ko et denviron 32 pages pour les autres tailles de page, lorsque lespace est
ncessaire. Cela peut amliorer les performances lors du chargement de
volumes de donnes importants et permet galement de conserver les
fichiers de base de donnes plus contigus au sein du systme de fichiers.
Clause RENAME Si vous renommez un fichier de base de donnes autre
que le fichier racine ou que vous le dplacez vers un autre rpertoire ou un
autre device, utilisez la clause RENAME avec linstruction ALTER
DBSPACE afin quAdaptive Server Anywhere puisse retrouver ce fichier au
dmarrage de la base de donnes.
Lutilisation de linstruction ALTER DBSPACE avec RENAME sur le

280
Chapitre 4. Instructions SQL

dbspace principal, SYSTEM, na aucun effet.


Utilisation Chaque base est contenue dans un ou plusieurs fichiers. Un dbspace est un
fichier supplmentaire dans lequel un nom logique est associ chaque
fichier de base de donnes ; il peut contenir un plus grand nombre de
donnes que le fichier de base de donnes principal. Linstruction ALTER
DBSPACE modifie le fichier de base de donnes principal (galement appel
fichier racine) ou un dbspace supplmentaire. Les noms dbspace dune base
de donnes se trouvent dans la table systme SYSFILE. Le nom dbspace du
fichier de base de donnes principal est SYSTEM.
Au dmarrage dune base de donnes multifichier, la ligne de commande ou
la description de la source de donnes ODBC indique Adaptive Server
Anywhere o trouver le fichier de base de donnes principal. Le fichier de
base de donnes principal contient les tables systme. Adaptive Server
Anywhere recherche lemplacement des autres dbspaces dans ces tables
systme, puis les ouvre tous.
Autorisations Vous devez dtenir les droits DBA La connexion la base de donnes doit
tre unique.
Effets secondaires Commit automatique
Voir aussi Instruction CREATE DBSPACE la page 357
Utilisation des bases de donnes [ASA - Guide de lutilisateur SQL,
page 33]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Exemple Lexemple suivant augmente la taille du dbspace SYSTEM de 200 pages :
ALTER DBSPACE system
ADD 200

Lexemple suivant augmente la taille du dbspace SYSTEM de 400


mga-octets :
ALTER DBSPACE system
ADD 400 MB

Lexemple suivant modifie le nom de fichier associ au dbspace system_2 :


ALTER DBSPACE system_2
RENAME e:\db\dbspace2.db

281
Instruction ALTER DOMAIN
Description Renommer un domaine ou un type de donnes dfini par lutilisateur.
Toutefois, cette instruction ne permet pas de renommer les types Java.
Syntaxe ALTER { DOMAIN | DATATYPE } type_utilisateur RENAME nouveau_nom

Utilisation Lorsque vous excutez cette instruction, le nom du type de donnes ou du


domaine dfini par lutilisateur est mis jour dans la table systme
SYSUSERTYPE. Cette instruction ne permet pas de renommer les types
Java.

Remarque
Les procdures, triggers, vues ou vnements qui font rfrence au type de
donnes ou au domaine dfini par lutilisateur doivent tre recrs, dfaut
de quoi ils continueront se rfrer lancien nom.
Autorisations Vous devez dtenir des droits DBA ou tre lutilisateur de base de donnes
qui a cr le domaine.
Effets secondaires Validation automatique.
Voir aussi Instruction CREATE DOMAIN la page 360
Domaines la page 81
Utilisation des domaines [ASA - Guide de lutilisateur SQL, page 101]
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Dans lexemple suivant, le domaine Address est renomm MailingAddress :
ALTER DOMAIN Address RENAME MailingAddress

282
Chapitre 4. Instructions SQL

Instruction ALTER EVENT


Description Modifier la dfinition dun vnement ou sa routine de gestion associe pour
lautomatisation des actions prdfinies. Modifier galement la dfinition
des actions planifies.
Syntaxe ALTER EVENT nom_vnement
[ DELETE TYPE | TYPE type_vnement ]
{ WHERE { condition_trigger | NULL }
| { ADD | MODIFY | DELETE } SCHEDULE spcif_planificat.
}
[ ENABLE | DISABLE ]
[ [ MODIFY ] HANDLER instruction_compose | DELETE HANDLER }

type_vnement :
BackupEnd | "Connect"
| ConnectFailed | DatabaseStart
| DBDiskSpace | "Disconnect"
| GlobalAutoincrement | GrowDB
| GrowLog | GrowTemp
| LogDiskSpace | "RAISERROR"
| ServerIdle | TempDiskSpace

condition_trigger :
event_condition( nom_condition ) { = | < | > | != | <= | >= } valeur

spcif_planificat. :
[ nom_planificat. ]
{ START TIME heure_dbut | BETWEEN heure_dbut AND heure_fin }
[ EVERY priode { HOURS | MINUTES | SECONDS } ]
[ ON { ( jour_de_semaine, . . . ) | ( jour_du_mois, . . . ) } ]
[ START DATE date_dpart ]

nom_vnement | nom_planification : identificateur

jour_de_semaine : chane

valeur | priode | jour_du_mois : entier

heure_dbut | heure_fin : heure

date_dpart : date

Paramtres Clause DELETE TYPE Supprime une association de lvnement ayant un


certain type dvnement. Pour obtenir une description des types
dvnement, reportez-vous la section Choix dun vnement systme
[ASA - Guide dadministration, page 337].

Clause ADD | MODIFY | DELETE SCHEDULE Modifie la dfinition dune

283
planification. Une seule planification peut tre modifie dans une instruction
ALTER EVENT.
Clause WHERE Loption WHERE NULL supprime une condition.
Pour obtenir la description de la plupart de ces paramtres, reportez-vous
la section Instruction CREATE EVENT la page 364.
Utilisation Cette instruction vous permet de modifier une dfinition dvnement cre
avec CREATE EVENT. Vous avez le choix entre une multitude dutilisations
:
Vous pouvez utiliser ALTER EVENT pour modifier une routine de
gestion dvnement pendant le dveloppement.

Vous pouvez dfinir et tester une routine de gestion dvnement sans


condition de trigger ou sans planification pendant une phase de
dveloppement, puis ajouter les conditions dexcution laide de
linstruction ALTER EVENT une fois la routine termine.
Vous pouvez dsactiver temporairement une routine de gestion
dvnement en dsactivant lvnement.
Autorisations Vous devez dtenir les droits DBA
Effets secondaires Commit automatique
Voir aussi Instruction BEGIN la page 324
Instruction CREATE EVENT la page 364

284
Chapitre 4. Instructions SQL

Instruction ALTER FUNCTION


Description Modifier une fonction. Vous devez inclure la totalit de la nouvelle fonction
dans linstruction ALTER FUNCTION.
Syntaxe 1 ALTER FUNCTION [ propritaire.]nom_fonction
dfinition_fonction
dfinition_fonction :
syntaxe de CREATE FUNCTION suivant le nom

Syntaxe 2 ALTER FUNCTION [ propritaire.]nom_fonction SET HIDDEN

Utilisation Syntaxe 1 Linstruction ALTER FUNCTION est, sur le plan de la syntaxe,


identique linstruction CREATE FUNCTION, exception faite du premier
mot. Il est possible de modifier les deux versions de linstruction CREATE
FUNCTION.
Les autorisations existantes sur la fonction sont maintenues et il nest pas
ncessaire de les rattribuer. Si DROP FUNCTION et CREATE FUNCTION
sont excutes, les autorisations dexcution doivent tre rattribus.
Syntaxe 2 Vous pouvez utiliser SET HIDDEN pour coder la dfinition de
la fonction associe et la rendre illisible. Cette fonction peut tre dcharge
et recharge dans dautres bases de donnes.

Ce paramtre est irrversible. Si vous souhaitez prserver la source dori-


gine, vous devez la maintenir en dehors de la base de donnes.
Si SET HIDDEN est utilis, le dbogage utilisant le dbogueur de
procdures stockes naffiche pas la dfinition de la fonction. Celle-ci nest
pas non plus disponible dans le profilage de procdure.
Autorisations Vous devez tre le propritaire de la fonction ou ladministrateur de la base
de donnes (DBA).
Effets secondaires Commit automatique
Voir aussi Instruction CREATE FUNCTION la page 376
Instruction ALTER PROCEDURE la page 288
Instruction DROP la page 474
Masquage du contenu des procdures, des fonctions, des triggers et des
vues [ASA - Guide de lutilisateur SQL, page 767]
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

285
Instruction ALTER INDEX
Description Cette instruction permet de renommer un index ou une cl trangre, ou bien
de modifier la nature clusterise de lindex.
Syntaxe ALTER { spcif_index { clause_rename | clause_cluster }
| spcif_cl_trangre { clause_rename | clause_cluster }
| spcif_cl_primaire clause_cluster }

spcif_index :
INDEX nom_index ON [ propritaire.]nom_table

spcif_cl_trangre :
[ INDEX ] FOREIGN KEY nom_rle ON [ propritaire.]nom_table

spcif_cl_primaire :
[ INDEX ] PRIMARY KEY ON [ propritaire.]nom_table

clause_rename :
RENAME [ AS | TO ] nom_index

clause_cluster :
CLUSTERED | NONCLUSTERED
Paramtres clause_rename Spcifiez un nouveau nom pour lindex.
Spcifiez si lindex doit devenir CLUSTERED ou
clause_cluster
NONCLUSTERED. Un seul index par table peut tre clusteris.
Utilisation Linstruction ALTER INDEX excute deux tches :
Elle peut servir renommer un index ou une cl trangre.
Il permet galement de transformer un type dindex non clusteris en
clusteris ou vice versa.
Linstruction ALTER INDEX peut servir modifier la spcification
de clusterisation de lindex, sans toutefois rorganiser les donnes. De
mme, un seul index par table peut tre clusteris. Pour plus
dinformations sur les index clusteriss, reportez-vous la section
Instruction CREATE INDEX la page 383.
Linstruction ALTER INDEX ne peut pas tre utilise pour modifier un
index sur une table temporaire locale. Si vous le faites malgr tout, lerreur
Lindex est introuvable est dclenche.
Autorisations Vous devez tre le propritaire de la table, ou dtenir des autorisations
REFERENCES sur la table, ou encore possder les droits DBA.
Effets secondaires Commit automatique Efface les paramtres de longlet Rsultats dans le
volet Rsultats dInteractive SQL. Ferme tous les curseurs pour la connexion
en cours.

286
Chapitre 4. Instructions SQL

Voir aussi Instruction CREATE INDEX la page 383


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Exemple Linstruction suivante renomme lindex ix_prod_name sur la table product
en ixProductName :
ALTER INDEX ix_prod_name ON product
RENAME TO ixProductName

Linstruction suivante transforme ix_prod_name en index clusteris :


ALTER INDEX ix_prod_name ON product
CLUSTERED

287
Instruction ALTER PROCEDURE
Description Modifier une procdure ou activer/dsactiver une procdure pour la
rplication avec Sybase Replication Server. Vous devez inclure la totalit de
la nouvelle procdure dans linstruction ALTER FUNCTION.
Syntaxe 1 ALTER PROCEDURE [ propritaire.]nom_procdure
dfinition_procdure

dfinition_procdure :
syntaxe de CREATE PROCEDURE suivant le nom

Syntaxe 2 ALTER PROCEDURE [ propritaire.]nom_procdure


REPLICATE { ON | OFF }

Syntaxe 3 ALTER PROCEDURE [ propritaire.]nom_procdure SET HIDDEN

Utilisation Syntaxe 1 Linstruction ALTER PROCEDURE est, sur le plan de la


syntaxe, identique linstruction CREATE PROCEDURE, except le
premier mot. Il est possible de modifier les deux versions de linstruction
CREATE PROCEDURE.
Les autorisations existantes sur la procdure sont maintenues et il nest pas
ncessaire de les rattribuer. Si DROP PROCEDURE et CREATE
PROCEDURE sont excutes, les droits dexcution doivent tre rattribus.
Syntaxe 2 Si une procdure doit tre rplique sur dautres sites avec
Sybase Replication Server, activez REPLICATE ON pour cette procdure.
La syntaxe 2 de linstruction ALTER PROCEDURE produit le mme effet
que les procdures systme sp_setreplicate ou sp_setrepproc table
dAdaptive Server Enterprise.
Syntaxe 3 Vous pouvez utiliser SET HIDDEN pour coder la dfinition de
la procdure associe et la rendre illisible. Cette procdure peut tre
dcharge et recharge dans dautres bases de donnes.

Ce paramtre est irrversible. Si vous souhaitez prserver la source dori-


gine, vous devez la maintenir en dehors de la base de donnes.
Si SET HIDDEN est utilis, le dbogage utilisant le dbogueur de
procdures stockes naffiche pas la dfinition de la procdure. Celle-ci nest
pas non plus disponible dans le profilage de procdure.
Vous ne pouvez pas combiner la syntaxe 2 et la syntaxe 1. La syntaxe 3 ne
peut tre combine ni avec la syntaxe 1, ni avec la syntaxe 2.
Autorisations Vous devez tre le propritaire de la procdure ou ladministrateur de la base
de donnes (DBA).

288
Chapitre 4. Instructions SQL

Effets secondaires Commit automatique.


Voir aussi Instruction CREATE PROCEDURE la page 390
Instruction ALTER FUNCTION la page 285
Instruction DROP la page 474
Masquage du contenu des procdures, des fonctions, des triggers et des
vues [ASA - Guide de lutilisateur SQL, page 767]
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.

289
Instruction ALTER PUBLICATION
Description Modifier une publication. Dans MobiLink, une publication identifie les
donnes synchronises dans une base de donnes distante Adaptive Server
Anywhere. Dans SQL Remote, les publications identifient les donnes
rpliques dans les bases de donnes consolides et distantes.
Syntaxe ALTER PUBLICATION [ propritaire.]nom_publication clause_alterpub, . . .

clause_alterpub:
ADD TABLE description_article
| MODIFY TABLE description_article
| { DELETE | DROP } TABLE [ propritaire.]nom_table
| RENAME nom_publication

propritaire, nom_publication, nom_table : identificateur

description_article :
nom_table [ ( nom_colonne, . . . ) ]
[ WHERE condition_recherche ]
[ SUBSCRIBE BY expression ]

Utilisation Cette instruction sapplique uniquement MobiLink et SQL Remote.


Linstruction ALTER PUBLICATION cre une publication dans la base de
donnes. La contribution la publication dune table est appele article.
Vous pouvez modifier une publication en ajoutant, modifiant ou supprimant
des articles ou encore en la renommant. Si vous modifiez un article, vous
devez saisir lintgralit de la spcification de larticle modifi.
Les options dune publication MobiLink peuvent tre dfinies laide de la
clause ADD OPTION soit dans linstruction ALTER SYNCHRONIZATION
SUBSCRIPTION, soit dans linstruction CREATE SYNCHRONIZATION
SUBSCRIPTION.
Autorisations Vous devez dtenir les droits DBA (administrateur de la base de donnes) ou
tre le propritaire de la publication. Laccs exclusif toutes les tables
rfrences dans linstruction est requis.
Effets secondaires Commit automatique
Voir aussi Instruction CREATE PUBLICATION la page 402
Instruction DROP PUBLICATION la page 479
Instruction ALTER SYNCHRONIZATION SUBSCRIPTION
[MobiLink] la page 301
Instruction CREATE SYNCHRONIZATION SUBSCRIPTION
[MobiLink] la page 419
Procdure sp_add_article [SQL Remote - Guide de lutilisateur, page 419]

290
Chapitre 4. Instructions SQL

Procdure sp_add_article_col [SQL Remote - Guide de lutilisateur,


page 421]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.

Exemple Linstruction suivante ajoute la table customer dans la publication


pub_contact :
ALTER PUBLICATION pub_contact
ADD TABLE customer

291
Instruction ALTER REMOTE MESSAGE TYPE [SQL
Remote]
Description Utilisez cette instruction pour remplacer le systme de messagerie de
lditeur ou ladresse de lditeur dun systme de messagerie donn, par un
type de message qui a t cr.
Syntaxe ALTER REMOTE MESSAGE TYPE systme_messagerie
ADDRESS adresse
systme_messagerie : FILE | FTP | MAPI | SMTP | VIM

adresse : chane

Paramtres systme_messagerie Un des systmes de messagerie pris en charge par


SQL Remote. Il doit sagir de lun des types ci-aprs.
adresse Chane contenant une adresse correcte pour le systme de
messagerie spcifi.
Utilisation Cette instruction modifie ladresse de lditeur pour un type de message
donn.
Lagent de message envoie des messages sortants dune base de donnes via
lune des liaisons de message prises en charge. Lutilitaire dextraction se
sert de cette adresse lorsquil excute linstruction GRANT
CONSOLIDATE dans la base de donnes distante.
Ladresse est celle de lditeur indiqu sous le systme de messagerie
spcifi. Sil sagit dun systme de messagerie lectronique, la chane
dadresse doit tre une adresse lectronique correcte. Sil sagit dun
systme de partage de fichiers, la chane dadresse est un sous-rpertoire du
rpertoire spcifi par la variable denvironnement SQLREMOTE ou un
sous-rpertoire du rpertoire actuel. Vous pouvez modifier la valeur de la
chane dadresse dans linstruction GRANT CONSOLIDATE au niveau de
la base de donnes distante.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Commit automatique.
Voir aussi Instruction CREATE REMOTE MESSAGE TYPE [SQL Remote] la
page 405
Procdure sp_remote_type [SQL Remote - Guide de lutilisateur, page 465]
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

292
Chapitre 4. Instructions SQL

Exemple Linstruction suivante remplace ladresse de lditeur pour la liaison de


message FILE par new_addr :
CREATE REMOTE MESSAGE TYPE file
ADDRESS new_addr

293
Instruction ALTER SERVER
Description Modifier les attributs dun serveur distant.
Syntaxe ALTER SERVER nom_serveur
[ CLASS classe_serveur ]
[ USING info_connexion ]
[ CAPABILITY nom_cap { ON | OFF } ]
[ CONNECTION CLOSE [ CURRENT | ALL | id_connexion

classe_serveur :
ASAJDBC | ASEJDBC
| ASAODBC | ASEODBC
| DB2ODBC | MSSODBC
| ORAODBC | ODBC
info_connexion :
nom_machine:numro_port[/nom_base ] | nom_source_donnes

Paramtres Clause CLASS La clause CLASS sert modifier la classe du serveur.


Pour plus dinformations sur les classes de serveur et sur la configuration
dun serveur, reportez-vous la section Classes de serveurs pour laccs
aux donnes distantes [ASA - Guide de lutilisateur SQL, page 681].
Clause USING La clause USING sert modifier les informations de
connexion du serveur. Pour plus dinformations sur info_connexion,
reportez-vous la section Instruction CREATE SERVER la page 409.
Clause CAPABILITY La clause CAPABILITY active (ON) ou dsactive
(OFF) les fonctionnalits du serveur. Celles-ci sont stockes dans la table
systme syscapability. Les noms de ces fonctionnalits sont enregistrs dans
la table systme syscapabilityname. La table syscapability ne contient
aucune entre pour serveur distant tant que la premire connexion ce
serveur na pas eu lieu. A la premire connexion, Adaptive Server Anywhere
interroge le serveur sur ses fonctionnalits puis remplit la table syscapability.
Lors des connexions suivantes, les fonctionnalits du serveur sont
recherches dans cette table.
En gnral, vous navez pas besoin de modifier les fonctionnalits dun
serveur. Toutefois, il peut tre ncessaire de modifier les fonctionnalits dun
serveur gnrique de classe ODBC.
Clause CONNECTION CLOSE Lorsquun utilisateur cre une connexion
un serveur distant, la connexion distante nest pas ferme tant que
lutilisateur ne sest pas dconnect de la base de donnes locale. La clause
CONNECTION CLOSE vous permet de fermer explicitement des
connexions un serveur distant. Ceci peut savrer utile lorsquune
connexion distante devient inactive ou nest plus ncessaire.

294
Chapitre 4. Instructions SQL

Les instructions SQL suivantes sont quivalentes et ferment la connexion en


cours au serveur distant :
ALTER SERVER server-name CONNECTION CLOSE

ALTER SERVER server-name CONNECTION CLOSE CURRENT

Cette syntaxe permet de fermer la fois les connexions ODBC et JDBC un


serveur distant. Vous navez pas besoin des droits DBA pour excuter ces
instructions.
Vous pouvez galement dconnecter une connexion ODBC distante
particulire en spcifiant un ID de connexion, ou dconnecter toutes les
connexions ODBC distantes en spcifiant le mot cl ALL. Si vous tentez de
fermer une connexion JDBC au moyen dun ID de connexion ou du mot cl
ALL, une erreur se produit. Lorsque la connexion identifie par
id_connexion ne correspond pas la connexion locale courante, lutilisateur
doit disposer des droits DBA pour pouvoir la fermer.
Utilisation Linstruction ALTER SERVER modifie les attributs dun serveur distant.
Les modifications ne seront prises en compte que lors de la prochaine
connexion au serveur distant.
Autorisations Droits RESOURCE requis.
Effets secondaires Commit automatique.
Voir aussi Instruction CREATE SERVER la page 409
Instruction DROP SERVER la page 481
Classes de serveurs pour laccs aux donnes distantes [ASA - Guide de
lutilisateur SQL, page 681]
Rsolution des problmes daccs aux donnes distantes [ASA - Guide
de lutilisateur SQL, page 678]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.
Sybase Prise en charge par Open Client/Open Server.
Exemple Lexemple ci-aprs modifie la classe de serveur dAdaptive Server nomme
ase_prod afin que sa connexion Adaptive Server Anywhere seffectue via
ODBC. Le nom de la source de donnes est ase_prod.
ALTER SERVER ase_prod
CLASS ASEODBC
USING ase_prod

Lexemple ci-aprs modifie une fonctionnalit du serveur infodc.


ALTER SERVER infodc
CAPABILITY insert select OFF

295
Lexemple suivant illustre la fermeture de toutes les connexions au serveur
distant nomm rem_test :
ALTER SERVER rem_test
CONNECTION CLOSE ALL

Lexemple ci-aprs illustre la fermeture dune connexion particulire au


serveur distant nomm rem_test. LID de cette connexion est 142536.
ALTER SERVER rem_test
CONNECTION CLOSE 142536

296
Chapitre 4. Instructions SQL

Instruction ALTER SERVICE


Description Modifier un service Web.
Syntaxe 1 ALTER SERVICE nom_service
[ TYPE DISH ]
[ GROUP { nom_groupe | NULL } ]
[ FORMAT { DNET | CONCRETE | XML | NULL } ]
[ attributs_communs ]

Syntaxe 2 CREATE SERVICE nom_service


[ TYPE SOAP ]
[ FORMAT { DNET | CONCRETE | XML | NULL } ]
[ attributs_communs ]
[ AS instruction ]

Syntaxe 3 CREATE SERVICE nom_service


[ TYPE { RAW | HTML | XML } ]
[ URL [ PATH ] { ON | OFF | ELEMENTS } ]
[ attributs_communs ]
[ AS { instruction | NULL } ]

attributs_communs :
[ AUTHORIZATION { ON | OFF } ]
[ SECURE { ON | OFF } ]
[ USER { nom_utilisateur | NULL } ]

Paramtres nom_service Nom du service modifier.


chane_type_service Identifie le type de service. Il doit sagir de lun des
types de service rpertoris. Il ny a pas de valeur par dfaut.
Clause AUTHORIZATION Dtermine si les utilisateurs doivent indiquer un
nom dutilisateur et un mot de passe par le biais de lautorisation HTTP
Basic lors de la connexion au service. Si cette clause a la valeur OFF, la
clause AS est requise et un seul utilisateur doit tre identifi par la clause
USER. Toutes les demandes sont excutes laide du compte et des
autorisations de cet utilisateur.
Si cette clause a la valeur ON, tous les utilisateurs doivent fournir un nom et
un mot de passe. Vous pouvez ventuellement limiter lutilisation de ce
service certains utilisateurs en fournissant un nom dutilisateur ou de
groupe laide de la clause USER. Si le nom dutilisateur est NULL, tous
les utilisateurs connus peuvent accder au service.
La valeur par dfaut est ON. Il est recommand dexcuter les systmes de
production avec la clause AUTHORIZATION active et daccorder
lautorisation dutiliser le service en ajoutant des utilisateurs dans un groupe.
Clause SECURE Indique si les connexions non scurises sont acceptes.

297
ON indique que seules les connexions HTTPS doivent tre acceptes. Les
demandes de service reues sur le port HTTP sont automatiquement
rachemines vers le port HTTPS. Si cette clause a la valeur OFF, les
connexions HTTP et HTTPS sont acceptes. La valeur par dfaut est OFF.
Clause USER Si la clause AUTHORIZATION est dsactive, ce
paramtre devient obligatoire et indique lID utilisateur permettant
dexcuter toutes les demandes de service. Si la clause AUTHORIZATION
est active (activation par dfaut), cette clause facultative identifie
lutilisateur ou le groupe autoris accder au service. La valeur par dfaut
est NULL, ce qui accorde laccs tous les utilisateurs.
Clause URL Dtermine si les chemins URI sont accepts et, dans ce cas, le
traitement qui leur est rserv. OFF indique que rien ne doit suivre le nom
du service dans une requte URI. ON indique que la suite du chemin URI est
interprte comme la valeur dune variable nomme URL. ELEMENTS
indique que la suite du chemin URI doit tre divise au niveau de la barre
oblique en une liste de 10 lments maximum. Les valeurs sont affectes aux
variables nommes url qui sont suivies dun suffixe numrique compris
entre 1 et 10 ; par exemple, les noms des trois premires variables sont url1,
url2 et url3. Si lURI comprend moins de 10 valeurs, les autres variables ont
la valeur NULL. Si le nom du service se termine par le caractre /, la clause
URL doit prendre la valeur OFF. La valeur par dfaut est OFF.
Clause GROUP Sapplique uniquement aux services DISH. Elle spcifie
un prfixe commun qui contrle les services SOAP exposs par le service
DISH. Par exemple, si GROUP xyz est spcifi, seuls les services SOAP
xyz /aaaa, xyz /bbbb ou xyz /cccc sont exposs, mais pas les services
abc/aaaa ou xyzaaaa. Si aucun nom de groupe nest spcifi, le service
DISH expose tous les services SOAP de la base de donnes. Les services
SOAP peuvent tre exposs par plusieurs services DISH. Les mmes
caractres sont autoriss dans les noms de groupe et de service.
Clause FORMAT Sapplique uniquement aux services DISH et SOAP. Elle
produit des formats de sortie compatibles avec divers types de clients SOAP,
tels que .NET ou Java JAX-RPC. Si le format dun service SOAP nest pas
spcifi, il est emprunt la dclaration de service DISH de ce service. Si le
service DISH ne dclare pas de format, DNET, qui est compatible avec les
clients .NET, est utilis par dfaut. Un service SOAP qui ne dclare pas de
format peut tre utilis avec diffrents types de clients SOAP. Pour cela,
plusieurs services DISH doivent tre dfinis, chacun avec un type FORMAT
diffrent.
instruction Si linstruction a la valeur NULL, lURI doit spcifier
linstruction excuter. Sinon, linstruction SQL spcifie est la seule qui
puisse tre excute par lintermdiaire du service. Les services SOAP

298
Chapitre 4. Instructions SQL

doivent avoir des instructions, contrairement aux services DISH. La valeur


par dfaut est NULL.
Il est fortement recommand que tous les services excuts dans les
systmes de production dfinissent une instruction. Linstruction peut avoir
la valeur NULL seulement si la clause AUTHORIZATION est active.
Types de formats DNET Format Microsoft DataSet pour clients .NET SOAP. DNET est la
valeur de FORMAT par dfaut et tait le seul format disponible avant la
version 9.0.2.
CONCRETE Un format DataSet de plate-forme neutre pour clients tels
que JAX-RPC ou pour ceux qui crent automatiquement des interfaces en
fonction du format de la structure des donnes renvoyes. Ce type de
format expose un lment ASADataset lintrieur du WSDL. Cet
lment dcrit le jeu de rsultats comme une hirarchie de jeu de lignes
compose dun tableau de lignes contenant chacune un tableau
dlments de colonnes.
XML Format de chane XML simple. Le DataSet est renvoy sous la
forme dune chane qui peut tre transmise un analyseur XML. Ce
format est le plus adapt entre clients SOAP.
Types de service RAW Le jeu de rsultats est envoy au client sans autre formatage. Vous
pouvez crer des documents formats en gnrant explicitement les
balises requises dans votre procdure.
HTML Le jeu de rsultats dune instruction ou procdure est
automatiquement format en document HTML contenant une table.
XML Le jeu de rsultats est renvoy en XML. Sil est dj en XML,
aucun formatage supplmentaire nest appliqu. Sil ne lest pas dj, il
est automatiquement converti au format XML. Ceci quivaut utiliser la
clause FOR XML RAW dans une instruction SELECT.
SOAP Le jeu de rsultats est renvoy en tant que rponse SOAP. Le
format des donnes est dtermin par la clause FORMAT. Une demande
mise un service SOAP doit tre une demande SOAP correcte ; il ne
peut pas sagir dune simple demande HTTP. Pour plus dinformations
sur les normes SOAP, consultez le site www.w3.org/TR/SOAP.
DISH Un service DISH (Determine SOAP Handler) agit en tant que
proxy pour les services SOAP identifis par la clause GROUP, et gnre
un fichier WSDL (Web Services Description Language) pour chaque
service SOAP.
Utilisation Linstruction alter service incite le serveur de base de donnes agir en tant
que serveur Web.

299
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Aucun.
Voir aussi Instruction CREATE SERVICE la page 412, Instruction DROP
SERVICE la page 482
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Pour configurer rapidement un serveur Web, dmarrez un serveur de base de
donnes avec loption -xs, puis excutez les instructions suivantes :
CREATE SERVICE tables TYPE XML

ALTER SERVICE tables


AUTHORIZATION OFF
USER DBA
AS SELECT *
FROM SYS.SYSTABLE

Une fois ces instructions excutes, utilisez nimporte quel navigateur Web
pour ouvrir lURL http://localhost/tables.

300
Chapitre 4. Instructions SQL

Instruction ALTER SYNCHRONIZATION


SUBSCRIPTION [MobiLink]
Description Utilisez cette instruction dans une base de donnes distante Adaptive Server
Anywhere pour modifier les proprits de la souscription dun utilisateur
MobiLink une publication.
Syntaxe ALTER SYNCHRONIZATION SUBSCRIPTION
TO nom_publication
[ FOR nom_utilisateur_ml, . . . ]
[ TYPE protocole ]
[ ADDRESS options_protocole ]
[ ADD OPTION option=valeur , . . . ]
[ MODIFY OPTION option=valeur , . . . ]
[ DELETE { ALL OPTION | OPTION option, . . . } ]

nom_utilisateur_ml : identificateur

type_protocole : http | https | https_fips |tcpip | ActiveSync

options_protocole : chane

valeur : chane | entier

Paramtres Clause TO Spcifie le nom dune publication.


Clause FOR Spcifie un ou plusieurs noms dutilisateur MobiLink.
Omettez la clause FOR pour dfinir le type de protocole, les options de
protocole et les options tendues dune publication.
Pour plus dinformations sur le traitement par dbmlsync des options
dfinies en plusieurs emplacements, reportez-vous la section Ordre de
priorit des options tendues et des paramtres de connexion [Clients
MobiLink, page 82].

Clause TYPE Spcifie le protocole de rseau utiliser pour la


synchronisation. Le protocole par dfaut est tcpip.
Pour plus dinformations sur les protocoles de communication,
reportez-vous la section Option tendue CommunicationType (ctp)
[Clients MobiLink, page 124].

Clause ADDRESS Spcifie les options de protocole rseau, dont


lemplacement du serveur de synchronisation MobiLink.
Pour obtenir la liste complte des options de protocole, reportez-vous
la section Option tendue CommunicationAddress (adr) [Clients MobiLink,

301
page 120].

Clauses ADD OPTION, MODIFY OPTION, DELETE OPTION et DELETE


ALL OPTION Permettent dajouter, de modifier, de supprimer tout ou
partie des options tendues. Vous ne pouvez spcifier quune seule option
par clause.
Les valeurs de chaque option ne peuvent pas contenir les caractres =, ,
ni ;.
Pour obtenir la liste complte des options, reportez-vous la section
Options tendues dblmsync [Clients MobiLink, page 118].
Utilisation Modifier une souscription de synchronisation au sein dune base de donnes
MobiLink distante ou de rfrence.
Autorisations Vous devez dtenir les droits DBA. Laccs exclusif toutes les tables
rfrences dans la publication est requis.
Effets secondaires Commit automatique.
Voir aussi Instruction CREATE PUBLICATION la page 402
Instruction CREATE SYNCHRONIZATION USER [MobiLink] la
page 422
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Exemples Crez une souscription par dfaut, qui comporte des valeurs de souscription
par dfaut, pour la publication de vente (en omettant la clause FOR).
Indiquez ladresse du serveur de synchronisation MobiLink et spcifiez que
seul le certificat dorigine Certicom est valable.
CREATE SYNCHRONIZATION SUBSCRIPTION
TO sales_publication
ADDRESS host=test.internal;port=2439;
security=ecc_tls
OPTION memory=2m;

Abonnez lutilisateur MobiLink ml_user1 la publication de vente.


Dfinissez loption de mmoire 3 Mo, et non la valeur spcifie dans la
publication par dfaut.
CREATE SYNCHRONIZATION SUBSCRIPTION
TO sales_publication
FOR ml_user1
OPTION memory=3m;

302
Chapitre 4. Instructions SQL

Instruction ALTER SYNCHRONIZATION USER


[MobiLink]
Description Utilisez cette instruction dans une base de donnes Adaptive Server
Anywhere distante pour modifier les proprits dun utilisateur MobiLink.
Syntaxe ALTER SYNCHRONIZATION USER nom_utilisateur_ml
[ TYPE type_protocole ]
[ ADDRESS options_protocole ]
[ ADD OPTION option=valeur , . . . ]
[ MODIFY OPTION option=valeur , . . . ]
[ DELETE { ALL OPTION | OPTION option } ]

nom_utilisateur_ml : identificateur

type_protocole : http | https | https_fips | tcpip | ActiveSync

options_protocole : chane

valeur : chane | entier

Paramtres Clause TYPE Spcifie le protocole rseau utiliser pour la


synchronisation.
Pour plus dinformations sur les protocoles de communication,
reportez-vous la section Option tendue CommunicationType (ctp)
[Clients MobiLink, page 124].
Clause ADDRESS Spcifie les options de protocole rseau, dont
lemplacement du serveur de synchronisation MobiLink.
Pour obtenir la liste complte des options de protocole, reportez-vous
la section Option tendue CommunicationAddress (adr) [Clients MobiLink,
page 120].

Clauses ADD OPTION, MODIFY OPTION, DELETE OPTION et DELETE


ALL OPTION Permettent dajouter, de modifier, de supprimer tout ou
partie des options tendues. Vous ne pouvez spcifier quune seule option
par clause.
Pour obtenir la liste complte des options, reportez-vous la section
Options tendues dblmsync [Clients MobiLink, page 118].
Utilisation Modifier les proprits de lutilisation dune synchronisation dans une base
de donnes distante MobiLink.
Autorisations Vous devez dtenir les droits DBA. Laccs exclusif toutes les tables
rfrences dans la publication est requis.

303
Effets secondaires Commit automatique.
Voir aussi Instruction ALTER SYNCHRONIZATION SUBSCRIPTION
[MobiLink] la page 301
Instruction CREATE SYNCHRONIZATION USER [MobiLink] la
page 422
Instruction CREATE SYNCHRONIZATION SUBSCRIPTION
[MobiLink] la page 419
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

304
Chapitre 4. Instructions SQL

Instruction ALTER TABLE


Description Modifier une dfinition de table ou activer une table en vue dune rplication
laide de Replication Server.
Syntaxe 1 ALTER TABLE [ propritaire.]nom_table
{ clause_add | clause_modify | clause_drop | clause_rename }

clause_add :
ADD { dfinition_colonne | contrainte_table }
| { ADD PCTFREE entier | PCTFREE DEFAULT }

clause_modify :
MODIFY dfinition_colonne
| MODIFY nom_colonne { DEFAULT valeur_par_dfaut
| [ NOT ] NULL
| [ CONSTRAINT nom_contrainte ]
CHECK { NULL | ( nouvelle_condition ) } }
| ALTER nom_colonne modification_colonne
| ALTER nom_contrainte CHECK ( nouvelle_condition )

clause_drop :
{ DELETE | DROP }{
nom_colonne
| CONSTRAINT nom_contrainte
| CHECK
| UNIQUE ( nom_colonne, . . . )
| PRIMARY KEY
| FOREIGN KEY nom_rle }

clause_rename :
RENAME nom_nouvelle_table
| RENAME nom_colonne TO nom_nouvelle_colonne
| RENAME nom_contrainte TO nom_nouvelle_contrainte
dfinition_colonne :
nom_colonne type_donnes [ [ NOT ] NULL ] [ DEFAULT valeur_par_dfaut ] [
contrainte_colonne . . . ]

contrainte_table :
[ CONSTRAINT nom_contrainte ] { UNIQUE ( nom_colonne, . . . )
| PRIMARY KEY [ CLUSTERED ] ( nom_colonne, . . . )
| contrainte_cl_trangre
| CHECK ( condition ) }

305
contrainte_colonne :
[ CONSTRAINT nom_contrainte ] { UNIQUE
| PRIMARY KEY
| REFERENCES nom_table
[ ( nom_colonne ) ] [ actions ] [ CLUSTERED ]
| CHECK ( condition ) }
| COMPUTE ( expression )

modification_colonne :
SET DEFAULT valeur_par_dfaut
| DROP DEFAULT
| ADD [ CONSTRAINT nom_contrainte_colonne ] CHECK ( condition )
| { DELETE | DROP } CONSTRAINT nom_contrainte_colonne
| { DELETE | DROP } CHECK
| SET COMPUTE ( expression )
| DROP COMPUTE
valeur_par_dfaut :
valeur_spciale
| chane
| variable globale
| [ - ] nombre
| ( expression_constante )
| fonction_intgre( expression_constante )
| AUTOINCREMENT
| GLOBAL AUTOINCREMENT [ ( taille_partition ) ]
| NULL
| TIMESTAMP
| UTC TIMESTAMP
| LAST USER
| USER
valeur_spciale :
CURRENT { DATABASE | DATE
| REMOTE USER | TIME
| TIMESTAMP | UTC TIMESTAMP
| USER | PUBLISHER }

contrainte_cl_trangre :
[ NOT NULL ] FOREIGN KEY [ nom_rle ] [ (nom_colonne, . . . ) ]
REFERENCES nom_table [ (nom_colonne, . . . ) ] [ actions ]
[ CHECK ON COMMIT ] [ CLUSTERED ]

actions :
[ ON UPDATE action ] [ ON DELETE action ]

action :
CASCADE | SET NULL | SET DEFAULT | RESTRICT
Syntaxe 2 ALTER TABLE [ propritaire.]nom_table REPLICATE { ON | OFF }

306
Chapitre 4. Instructions SQL

Paramtres clause_add Ajoute une nouvelle colonne ou contrainte de table dans la


table. Pour plus dinformations, voir ci-dessous.
clause_modify Modifie une dfinition de colonne unique. Pour plus
dinformations, voir ci-dessous.
clause_drop Supprime une colonne ou une contrainte de table. Pour plus
dinformations, voir ci-dessous.
clause_rename Modifie le nom de la table, dune colonne ou dune
contrainte. Pour plus dinformations, voir ci-dessous.
ADD dfinition_colonne Ajoute une nouvelle colonne dans la table.
Si la colonne comporte une valeur par dfaut, celle-ci est inscrite sur toutes
les lignes de la nouvelle colonne.
Adaptive Server Anywhere optimise la cration de colonnes autorises
contenir la valeur NULL. La premire colonne autorise contenir NULL
rserve de la place pour huit colonnes de ce type et les initialise toutes
NULL. (Cela ne requiert pas de stockage supplmentaire.) Ainsi, les sept
autres colonnes ajoutes ne requirent aucune modification sur les lignes de
la table. Lajout dune neuvime colonne alloue alors de lespace dans un
autre ensemble de huit colonnes, puis modifie chaque ligne de la table pour
allouer de lespace supplmentaire.
ADD contrainte_table Ajoute une contrainte dans la table. Pour plus
dinformations sur les contraintes lies aux tables, reportez-vous la section
Instruction CREATE TABLE la page 425.
Si une clause PRIMARY KEY est spcifie, la table ne doit pas dj
contenir de cl primaire cre par linstruction CREATE TABLE ou par une
autre instruction ALTER TABLE.
Le nom de contrainte facultative vous permet de modifier ou de supprimer
individuellement des contraintes par la suite, au lieu de devoir modifier
toutes les contraintes de table.
Les contraintes CHECK appliques aux tables chouent si la valeur FALSE
est retourne. Si la valeur retourne est INCONNU, la modification est
autorise.
PCTFREE Spcifie le pourcentage despace libre que vous souhaitez
rserver pour chaque page de table. Lespace libre est utilis dans le cas o la
taille des lignes augmente lorsque les donnes sont mises jour. Si une page
de table ne contient pas despace libre, chaque fois que la taille dune ligne
augmente sur cette page, la ligne est divise sur plusieurs pages de table, ce
qui peut entraner une fragmentation de la ligne et ventuellement une
dgradation des performances.

307
Un pourcentage despace libre gal 0 indique quaucun espace ne doit tre
laiss sur chaque page, cest--dire que chaque page doit tre entirement
remplie. Un pourcentage lev despace libre signifie que chaque ligne
insre remplit une page elle toute seule. Si PCTFREE nest pas dfini ou
si la valeur DEFAULT est spcifie, 200 octets sont rservs dans chaque
page.
Lorsque PCTFREE est dfini, toutes les insertions suivantes dans les pages
de table utilisent la nouvelle valeur, lexception des lignes dj insres,
qui ne sont pas affectes. La valeur demeure jusqu ce quelle soit modifie
ou que la table soit supprime.
La spcification PCTFREE peut tre utilise pour les tables sous-jacentes,
temporaires globales ou temporaires locales. La valeur de PCTFREE est
stocke dans la table systme SYSATTRIBUTE, sauf dans le cas des tables
temporaires locales.
Pour plus dinformations, reportez-vous la section Table systme
SYSATTRIBUTE la page 712.
MODIFY dfinition_colonne Modifie la longueur ou le type de donnes
dune colonne existante dans une table. Si NOT NULL est indiqu, une
contrainte NOT NULL est ajoute dans la colonne en question. Dans le cas
contraire, la contrainte NOT NULL de la colonne nest pas modifie. Si
ncessaire, les donnes de la colonne modifie seront converties dans le
nouveau type de donnes. En cas derreur de conversion, lopration choue
et la table reste inchange.
Vous ne pouvez pas modifier une colonne pour en faire une colonne calcule
au moyen de la clause MODIFY. Les colonnes calcules peuvent
uniquement tre ajoutes, supprimes ou modifies laide des clauses
ADD, DELETE/DROP ou ALTER.

Suppression dun index, dune contrainte ou dune cl


Si la colonne est dclare dans une contrainte dunicit, une cl trangre
ou une cl primaire, la contrainte ou la cl doit tre supprime avant
modification de la colonne. Si une cl primaire est supprime, toutes les
cls trangres faisant rfrence la table sont galement supprimes.
Vous ne pouvez pas MODIFIER une contrainte portant sur une table ou
une colonne. Pour ce faire, vous devez supprimer (DELETE) la contrainte
et en ajouter (ADD) une nouvelle.
MODIFY nom_colonne DEFAULT valeur_par_dfaut Modifie la valeur
par dfaut dune colonne existante dans une table. Pour supprimer une valeur
par dfaut pour une colonne, spcifiez DEFAULT NULL. La modification
dune valeur par dfaut ne modifie pas les valeurs existantes de la table.

308
Chapitre 4. Instructions SQL

ALTER nom_colonne modification_colonne Modifie la dfinition dune


colonne. Les modifications autorises sont les suivantes :
SET DEFAULT valeur_par_dfaut Modifie la valeur par dfaut dune
colonne existante dans une table. Vous pouvez galement utiliser la
clause MODIFY pour accomplir la mme tche, mais ALTER est
conforme SQL/92, alors que MODIFY ne lest pas. La modification
dune valeur par dfaut ne modifie pas les valeurs existantes de la table.

DROP DEFAULT Supprime la valeur par dfaut dune colonne


existante dans une table. Vous pouvez galement utiliser la clause
MODIFY pour accomplir la mme tche, mais ALTER est conforme
SQL/92, alors que MODIFY ne lest pas. La suppression dune valeur par
dfaut ne modifie pas les valeurs existantes de la table.

ADD Ajoute une contrainte nomme ou une condition CHECK dans la


colonne. La nouvelle contrainte ou condition ne sapplique quaux
oprations effectues sur la table aprs sa dfinition. Les valeurs
existantes dans la table ne sont pas valides pour confirmer quelles
satisfont la nouvelle contrainte ou condition.

CONSTRAINT nom_colonne_contrainte Le nom de contrainte de


colonne facultative vous permet de modifier ou de supprimer
individuellement des contraintes par la suite, au lieu de devoir modifier
toutes les contraintes de colonne.
SET COMPUTE (expression) Modifie lexpression associe une
colonne calcule. Les valeurs de la colonne sont recalcules lors de
lexcution de linstruction, laquelle choue si la nouvelle expression
nest pas correcte.

DROP COMPUTE Change ltat dune colonne pour faire dune


colonne calcule une colonne non calcule. Cette instruction ne modifie
pas les valeurs existantes de la table.

MODIFY nom_colonne [ NOT ] NULL Modifie la contrainte NOT NULL


sur la colonne afin dautoriser ou dinterdire les valeurs NULL dans la
colonne.
MODIFY nom_colonne CHECK NULL Supprime la contrainte de
vrification de la colonne. Vous ne pouvez pas utiliser cette instruction sur
les bases de donnes cres avant la version 5.0.
MODIFY nom_colonne CHECK (condition) Remplace la condition
CHECK existante de la colonne par celle spcifie. Vous ne pouvez pas
utiliser cette instruction sur les bases de donnes cres avant la version 5.0.

309
DELETE nom_colonne Supprime une colonne de la table. Si cette colonne
est contenue dans un index, une contrainte dunicit, une cl trangre ou
une cl primaire, lindex, la contrainte ou la cl doit tre supprim avant
suppression de la colonne. Les contraintes CHECK qui concernent la
colonne ne sont pas supprimes.
DELETE nom_contrainte Supprime la contrainte nomme de la dfinition
de table.
DELETE CHECK Supprime toutes les contraintes de vrification pour la
table. La suppression concerne aussi bien les contraintes de vrification de la
table que celles des colonnes.
DELETE UNIQUE (nom_colonne, . . .) Supprime une contrainte dunicit
pour cette table. Toute cl trangre faisant rfrence cette contrainte
dunicit (plutt que la cl primaire) est galement supprime.
DELETE PRIMARY KEY Supprime la contrainte de cl primaire pour une
table. Toutes les cls trangres faisant rfrence la cl primaire de cette
table sont galement supprimes.
DELETE FOREIGN KEY nom_rle Supprime la contrainte de cl
trangre pour la table qui porte le nom de rle donn.
RENAME nom_nouvelle_table Remplace le nom de la table par le
nouveau nom de table (nom_nouvelle_table ). Toutes les applications qui
utilisent le nom de lancienne table doivent tre modifies. Les cls
trangres qui ont automatiquement reu le nom de lancienne table ne
changent pas de nom.
RENAME nom_colonne TO nom_nouvelle_colonne Remplace le nom
de la colonne par le nouveau nom de colonne (nom_nouvelle_colonne ).
Toutes les applications qui utilisent le nom de lancienne colonne devront
tre modifies.
Utilisation Syntaxe 1 Linstruction ALTER TABLE modifie les attributs (dfinition
des colonnes, contraintes) dans une table prcdemment cre. Notez que la
syntaxe permet dindiquer une liste de clauses de modification. Toutefois,
une seule contrainte de table ou de colonne peut tre ajoute, modifie ou
supprime dans une instruction ALTER TABLE. Il est impossible dajouter
et de modifier une table dans la mme instruction.
Vous ne pouvez pas utiliser ALTER TABLE sur une table temporaire locale.
Linstruction ALTER TABLE nest pas excute lorsquelle concerne une
table en cours dutilisation par une autre connexion. ALTER TABLE peut
tre consommatrice de temps CPU et le serveur ne traite aucune demande se
rapportant la table pendant lexcution de linstruction.

310
Chapitre 4. Instructions SQL

Pour plus dinformations sur lutilisation de loption CLUSTERED,


reportez-vous la section Utilisation dindex clusteriss [ASA - Guide de
lutilisateur SQL, page 68].

Avant la version 5.0, toutes les contraintes de table et de colonne se


trouvaient dans une contrainte de table unique. Par consquent, pour ces
bases de donnes, les contraintes de colonne individuelles ne peuvent pas
tre supprimes laide de la clause MODIFY nom_colonne CHECK
NULL ni tre remplaces laide de la clause MODIFY nom_colonne
CHECK (condition). Pour utiliser ces instructions, toutes les contraintes de
la table doivent tre supprimes, puis ajoutes laide de la clause MODIFY
nom_colonne CHECK (condition). A ce stade, vous pouvez utiliser
MODIFY CHECK.
Syntaxe 2 Lorsque loption REPLICATE ON est active pour une table,
toutes les modifications apportes cette table sont envoyes pour
rplication Replication Server. Les dfinitions de rplication dans
Replication Server permettent de dcider quelles modifications de la table
sont transmises dautres sites. La suite de cette section dcrit la syntaxe 1.
Autorisations Doit tre lun des langages suivants :
Propritaire de la table.
Utilisateur avec droits DBA.
Utilisateur possdant une autorisation ALTER sur la table.
ALTER TABLE exige un accs exclusif la table.
Les tables temporaires globales ne sont pas modifiables tant que tous les
utilisateurs qui les rfrencent ne se sont pas dconnects.
Effets secondaires Commit automatique
Les options MODIFY et DELETE (DROP) ferment tous les curseurs de la
connexion actuelle.
Un point de reprise est effectu au dbut de lopration ALTER TABLE.
Ds que vous modifiez une colonne ou une table, toutes les procdures
stockes, les vues ou autres lments faisant rfrence la colonne modifie
ne sont plus correctes.
Si vous modifiez la longueur dclare dune colonne, les statistiques de cette
colonne sont supprimes.
Voir aussi Instruction CREATE TABLE la page 425
Instruction DROP la page 474
Types de donnes SQL la page 55

311
Modification des tables [ASA - Guide de lutilisateur SQL, page 45]
Valeurs spciales la page 35
Contraintes de table et de colonne [ASA - Guide de lutilisateur SQL,
page 96]
Option ALLOW_NULLS_BY_DEFAULT [compatibilit] [ASA - Guide
dadministration, page 690]

Normes et compatibilit SQL/92 Fonctionnalit de niveau intermdiaire. Linstruction MODIFY


nest pas conforme SQL/92.
SQL/99 ADD COLUMN est une fonction principale. Les autres clauses
sont des extensions propritaire ou la mise en oeuvre dextensions
nommes spcifiques de SQL/99.
Sybase Certaines clauses ne sont pas prises en charge par Adaptive
Server Enterprise.
Exemple Lexemple suivant ajoute une colonne dans la table employee, qui prcise le
lieu de travail :
ALTER TABLE employee
ADD office CHAR(20) DEFAULT Boston

Lexemple suivant supprime la colonne office de la table employee :


ALTER TABLE employee
DELETE office

La colonne address de la table customer peut actuellement contenir jusqu


35 caractres. Pour lui permettre de contenir jusqu 50 caractres, saisissez :
ALTER TABLE customer
MODIFY address CHAR(50)

Lexemple suivant ajoute une colonne dans la table customer avec attribution
du nom dun interlocuteur chaque client :
ALTER TABLE customer
ADD sales_contact INTEGER
REFERENCES employee (emp_id)
ON UPDATE CASCADE
ON DELETE SET NULL

Cette cl trangre est construite avec des mises jour en cascade ; elle
prend la valeur NULL avec les suppressions. Si lID dun employ est
modifi, la colonne correspondante est mise jour pour reflter cette
modification. Si un employ quitte la socit et que son ID est supprim, la
valeur NULL est attribue la colonne correspondante.

312
Chapitre 4. Instructions SQL

Instruction ALTER TRIGGER


Description Remplacer la dfinition dun trigger par une version modifie.
Vous devez inclure la totalit de la dfinition du nouveau trigger dans
linstruction ALTER TRIGGER.
Syntaxe 1 ALTER TRIGGER nom_trigger dfinition_trigger

dfinition_trigger :
syntaxe de CREATE TRIGGER suivant le nom du trigger

Syntaxe 2 ALTER TRIGGER nom_trigger ON [propritaire.] nom_table SET HIDDEN

Utilisation Syntaxe 1 Linstruction ALTER TRIGGER est, sur le plan de la syntaxe,


identique linstruction CREATE TRIGGER, except le premier mot. Pour
plus dinformations sur les dfinition_trigger, reportez-vous aux sections
Instruction CREATE TRIGGER la page 438 et Instruction CREATE
TRIGGER [T-SQL] la page 446.
Il est possible dutiliser le format de syntaxe Transact-SQL ou Watcom-SQL
de CREATE TRIGGER.
Syntaxe 2 Vous pouvez utiliser SET HIDDEN pour coder la dfinition du
trigger associ et la rendre illisible. Le trigger peut tre dcharg et recharg
dans dautres bases de donnes.

Ce paramtre est irrversible. Si vous souhaitez prserver la source dori-


gine, vous devez la maintenir en dehors de la base de donnes.
Si SET HIDDEN est utilis, le dbogage utilisant le dbogueur de
procdures stockes naffiche pas la dfinition du trigger. Celle-ci nest pas
non plus disponible dans le profilage de procdure.
Autorisations Vous devez tre propritaire de la table sur laquelle le trigger est dfini, ou
dtenir les autorisations DBA, ou encore avoir obtenu des autorisations
ALTER sur la table et possder les droits RESOURCE.
Effets secondaires Commit automatique.
Voir aussi Instruction CREATE TRIGGER la page 438
Instruction CREATE TRIGGER [T-SQL] la page 446
Instruction DROP la page 474
Masquage du contenu des procdures, des fonctions, des triggers et des
vues [ASA - Guide de lutilisateur SQL, page 767]
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

313
Sybase Non prise en charge par Adaptive Server Enterprise.

314
Chapitre 4. Instructions SQL

Instruction ALTER VIEW


Description Remplacer la dfinition dune vue par une version modifie. Si SET
HIDDEN ou RECOMPILE est utilis, la dfinition de la vue nest pas
spcifie.
Syntaxe 1 ALTER VIEW
[ propritaire.]nom_vue [ ( nom_colonne, . . . ) ] AS instruction_select
[ WITH CHECK OPTION ]

Syntaxe 2 ALTER VIEW


[ propritaire.]nom_vue { SET HIDDEN | RECOMPILE }

Utilisation Syntaxe 1 Linstruction ALTER VIEW est, sur le plan de la syntaxe,


identique linstruction CREATE VIEW, except le premier mot. Elle
reprend tout le contenu de linstruction CREATE VIEW en remplaant
CREATE par ALTER. Les autorisations existantes sur la vue sont
maintenues et il nest pas ncessaire de les rattribuer. Si vous utilisez une
instruction DROP VIEW puis une instruction CREATE VIEW, vous devez
raffecter les autorisations sur la vue au lieu de spcifier ALTER VIEW.
Syntaxe 2 Vous pouvez utiliser SET HIDDEN pour coder la dfinition de
la vue associe et la rendre illisible. La vue peut tre dcharge et recharge
dans dautres bases de donnes.

Ce paramtre est irrversible. Si vous souhaitez prserver la source dori-


gine, vous devez la maintenir en dehors de la base de donnes.
Si SET HIDDEN est utilis, le dbogage utilisant le dbogueur de
procdures stockes naffiche pas la dfinition de la vue. Celle-ci nest pas
non plus disponible dans le profilage de procdure.
La clause RECOMPILE est utilise pour recrer les dfinitions de colonne
dune vue existante. Si les tables sur lesquelles repose une vue sont mises
jour, vous pouvez utiliser RECOMPILE pour mettre jour la dfinition de la
vue. La clause RECOMPILE est galement utilise par la procdure systme
sa_recompile_views pour mettre jour les dfinitions de vue lors de la
reconstruction dune base de donnes.
Pour plus dinformations, reportez-vous la section Procdure systme
sa_recompile_views la page 867.

Attention
Si linstruction SELECT dfinissant la vue contenait un astrisque (*), le
nombre de colonnes de la vue peut changer si des colonnes ont t ajoutes
ou supprimes des tables sous-jacentes. Les noms et les types de donnes
des colonnes de la vue peuvent galement changer.

315
Pour plus dinformations sur les mots-cls et les options, reportez-vous
la section Instruction CREATE VIEW la page 448.
Autorisations Vous devez tre le propritaire de la vue ou dtenir les droits DBA
(administrateur de la base de donnes).
Effets secondaires Commit automatique.
Toutes les procdures et tous les triggers sont dchargs de la mmoire si
bien que toute procdure ou trigger rfrenant la vue reflte la dfinition de
la nouvelle vue. Le dchargement et le chargement des procdures et des
triggers peuvent avoir des consquences sur les performances si vous
modifiez rgulirement les vues.
Voir aussi Instruction CREATE VIEW la page 448
Instruction DROP la page 474
Masquage du contenu des procdures, des fonctions, des triggers et des
vues [ASA - Guide de lutilisateur SQL, page 767]
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.

316
Chapitre 4. Instructions SQL

Instruction ALTER WRITEFILE (dconseille)


Description Modifier le nom du fichier de base de donnes en lecture seule auquel un
fichier dcriture se rapporte.

Instruction dconseille
Lutilisation de fichiers dcriture est dconseille.
Syntaxe ALTER WRITEFILE nom_fichier_criture
REFERENCES nom_fichier_base [ KEY cl ]

nom_fichier_criture | nom_fichier_base : chane

Utilisation Linstruction ALTER WRITEFILE modifie le nom du fichier de base de


donnes en lecture seule auquel le fichier dcriture se rapporte. Si vous
changez le rpertoire du fichier de base de donnes, vous pouvez excuter
cette instruction pour que le fichier dcriture pointe sur le nouvel
emplacement.
Le chemin daccs au fichier de base de donnes est relatif au serveur de
base de donnes.
Pour plus dinformations sur les barres obliques inverses comme
caractre dchappement dans les chanes, reportez-vous la section
Chanes la page 10.
Autorisations Les autorisations requises pour excuter cette instruction sont dfinies via la
ligne de commande du serveur, avec loption -gu. Par dfaut, les droits DBA
sont requis.
Vous devez spcifier une valeur KEY afin de modifier le fichier dcriture
dune base de donnes crypte fortement.
Non prise en charge par Windows CE.
Effets secondaires Commit automatique.
Voir aussi Instruction CREATE WRITEFILE (dconseille) la page 450
Utilitaire de cration dun fichier dcriture (dconseill) [ASA - Guide
dadministration, page 664]
Utilisation des fichiers dcriture (dconseille) [ASA - Guide
dadministration, page 322]
Utilisation de la base de donnes utility [ASA - Guide dadministration,
page 324]
Paramtre de connexion DatabaseKey [DBKEY] [ASA - Guide
dadministration, page 210]

Normes et compatibilit SQL/92 Extension propritaire.

317
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

Exemple Linstruction suivante modifie le fichier dcriture c:\readwrite.wrt existant


pour quil pointe vers le fichier de base de donnes h:\readonly.db :
ALTER WRITEFILE c:\\readwrite.wrt
REFERENCES h:\\readonly.db

318
Chapitre 4. Instructions SQL

Instruction BACKUP
Description Sauvegarder une base de donnes et un journal de transactions.
Syntaxe 1 (sauvegarde BACKUP DATABASE
dimage) DIRECTORY rpertoire_sauvegarde
[ WAIT BEFORE START ]
[ WAIT AFTER END ]
[ DBFILE ONLY ]
[ TRANSACTION LOG ONLY ]
[ TRANSACTION LOG RENAME [ MATCH ] ]
[ TRANSACTION LOG TRUNCATE ]
[ ON EXISTING ERROR ]
[ HISTORY { ON | OFF } ]

rpertoire_sauvegarde : { chane | variable }

Syntaxe 2 (sauvegarde BACKUP DATABASE TO racine_archivage


darchivage) [ WAIT BEFORE START ]
[ WAIT AFTER END ]
[ DBFILE ONLY ]
[ TRANSACTION LOG ONLY ]
[ TRANSACTION LOG RENAME [ MATCH ] ]
[ TRANSACTION LOG TRUNCATE ]
[ ATTENDED { ON | OFF } ]
[ WITH COMMENT chane commentaire ]
[ HISTORY { ON | OFF } ]

racine_archivage : { chane | variable }

chane_commentaire : chane

Paramtres rpertoire_sauvegarde Emplacement cible de ces fichiers sur le disque,


relatif au rpertoire actif du serveur au moment du dmarrage. Si le
rpertoire nexiste pas, il est cr. Le fait de spcifier une chane vide
comme rpertoire permet de renommer ou de tronquer le journal sans en
faire une copie pralablement.
Clause WAIT BEFORE START Cette clause garantit que la copie de
sauvegarde de la base de donnes ne contient pas dinformations requises
pour la reprise. En particulier, elle assure que le journal des annulations pour
chaque connexion est vide.
Si une sauvegarde est excute avec cette clause, vous pouvez dmarrer la
copie de sauvegarde de la base de donnes en mode lecture seule et la
valider. En activant la validation de la base de donnes de sauvegarde, vous
pouvez viter toute copie supplmentaire de la base de donnes.
Clause WAIT AFTER END Cette clause peut tre utilise si le journal de

319
transactions est en cours de modification de nom ou de troncature. Elle
garantit que toutes les transactions sont termines avant la modification de
nom ou la troncature du journal. Si vous utilisez cette clause, la sauvegarde
doit patienter avant de prendre fin pendant que les autres connexions valident
ou annulent toutes transactions ouvertes.
Clause DBFILE ONLY Cette clause peut tre utilise pour provoquer la
cration de copies de sauvegarde du fichier de base de donnes principal,
ainsi que des dbspaces associs. Le journal de transactions nest pas copi.
Clause TRANSACTION LOG ONLY Cette clause peut tre utilise pour
provoquer la cration dune copie de sauvegarde du journal de transactions.
Aucun autre fichier de base de donnes nest copi.
Clause TRANSACTION LOG RENAME [MATCH] Par cette clause, le
serveur modifie le nom du journal de transactions actuel la fin de la
sauvegarde. Le nom de la copie renomme est de la forme AAMMJJnn.log.
Si le mot-cl MATCH est omis, la copie de sauvegarde du journal porte le
mme nom que le journal de transactions actuel de la base de donnes. Si
vous indiquez le mot-cl MATCH, la copie de sauvegarde du journal de
transactions reoit un nom du type AAMMJJnn.log, correspondant la
copie renomme du journal de transactions actuel. Lutilisation du mot-cl
MATCH permet ainsi dexcuter la mme instruction plusieurs reprises
sans que les anciennes donnes soient crases.
Clause TRANSACTION LOG TRUNCATE Si cette clause est utilise, le
journal de transactions actuel est tronqu et redmarr une fois la sauvegarde
termine.
racine_archivage Nom du fichier ou nom du device dunit de bande
destin recevoir le fichier darchive.
Pour effectuer une sauvegarde sur bande, vous devez spcifier le nom de
device de lunit de bande. Par exemple, sous Windows NT ou NetWare, la
premire unit de bande est \\.\tape0.
La barre oblique inverse ( \) est un caractre dchappement dans les chanes
SQL, vous devez donc la doubler systmatiquement. Pour plus
dinformations sur les chanes et les caractres dchappement,
reportez-vous la section Chanes la page 10.
ON EXISTING ERROR Cette clause ne sapplique quaux sauvegardes
dimage. Par dfaut, les fichiers existants sont crass lorsque vous excutez
une instruction BACKUP DATABASE. Si cette clause est utilise, une erreur
se produit si lun des fichiers devant tre cr par la sauvegarde existe dj.
ATTENDED La clause ne sapplique que lors de la sauvegarde sur un
device de bande. ATTENDED ON (valeur par dfaut) indique quune

320
Chapitre 4. Instructions SQL

personne est disponible pour contrler ltat de lunit de bande et insrer


une nouvelle bande dans lunit si besoin est. Un message est envoy
lapplication ayant mis linstruction BACKUP si lunit de bande exige une
intervention. Le serveur de base de donnes attend ensuite que lunit soit
prte. Cette situation peut se produire, par exemple, lorsquune nouvelle
bande est requise.
Si ATTENDED OFF est spcifi et quune nouvelle bande est requise ou que
lunit nest pas prte, aucun message nest envoy et une erreur est gnre.
Chaque opration de BACKUP, quelle soit dimage ou darchivage, met
jour un fichier historique nomm backup.syb.
Pour plus dinformations sur le fichier backup.syb, reportez-vous la
section Variable denvironnement ASLOGDIR [ASA - Guide
dadministration, page 306].

WITH COMMENT Enregistre un commentaire dans le fichier darchive


ainsi que dans le fichier historique de la sauvegarde.
HISTORY Chaque opration BACKUP ajoute par dfaut une ligne dans le
fichier backup.syb. Vous pouvez empcher toute mise jour de ce fichier en
spcifiant HISTORY OFF. Cette option peut savrer utile dans les cas
suivants :
sauvegardes frquentes ;
absence de procdure darchivage ou de suppression rgulire du fichier
backup.syb ;
espace disque trs limit.
Utilisation La premire syntaxe correspond une sauvegarde dimage, la seconde une
sauvegarde darchivage.
Syntaxe 1 La sauvegarde dimage cre des copies de chacun des fichiers
de la base de donnes, tout comme lutilitaire dbbackup. Par dfaut,
lutilitaire de sauvegarde effectue la sauvegarde sur lordinateur client, mais
vous pouvez spcifier loption -s pour crer la sauvegarde sur le serveur.
Nanmoins, dans le cas de linstruction BACKUP, la sauvegarde ne peut tre
effectue que sur le serveur.
Eventuellement, il est possible de ne sauvegarder que le ou les fichiers de
base de donnes ou le journal de transactions. Le journal peut galement tre
renomm ou tronqu une fois que la sauvegarde est termine.
Par ailleurs, vous pouvez spcifier une chane vide comme rpertoire afin de
renommer ou de tronquer le journal sans le copier pralablement. Cette
possibilit est particulirement utile dans un environnement de rplication

321
o lespace est un souci constant. Vous pouvez utiliser cette fonction avec
une routine de gestion des vnements sur la taille du journal de transactions
pour renommer celui-ci lorsquil atteint une taille donne, et avec loption
DELETE_OLD_LOGS pour supprimer le journal lorsquil nest plus
ncessaire.
Pour effectuer une restauration partir dune sauvegarde dimage, recopiez
les fichiers sauvegards dans leur emplacement initial et rappliquez les
journaux de transactions comme indiqu au chapitre Sauvegarde et reprise
[ASA - Guide dadministration, page 407]

Syntaxe 2 Une sauvegarde darchivage gnre un fichier unique contenant


toutes les informations de sauvegarde requises. Indiquez comme destination
un nom de fichier ou nom de device dunit de bande. Les sauvegardes
darchivage sur bande ne sont pas supportes sur des versions de NetWare
antrieures NetWare 5.
Il ne peut exister quune seule sauvegarde sur une bande donne. Le fichier
backup.syb enregistre les oprations de BACKUP et RESTORE qui ont t
excutes sur un serveur donn.
La bande est jecte la fin de la sauvegarde.
Une seule archive par bande est autorise, mais une archive peut stendre
sur plusieurs bandes. Pour effectuer une restauration partir dune
sauvegarde darchivage, utilisez linstruction RESTORE DATABASE.
Si une instruction RESTORE rfrence un fichier darchive contenant
uniquement un journal de transactions, linstruction doit nanmoins spcifier
un nom de fichier pour lemplacement du fichier de base de donnes
restaur, mme si ce dernier nexiste pas. Par exemple, linstruction
RESTORE permettant deffectuer une restauration partir dune archive
contenant uniquement un journal dans le rpertoire C:\MYNEWDB se
prsente de la manire suivante :
RESTORE DATABASE c:\mynewdb\my.db FROM
archive-location

Autorisations Vous devez dtenir les droits DBA.


Effets secondaires Entrane un point de reprise.
Voir aussi Utilitaire de sauvegarde dune base de donnes [ASA - Guide
dadministration, page 541]
Instruction RESTORE DATABASE la page 608
Sauvegarde et reprise [ASA - Guide dadministration, page 407]
Instruction EXECUTE IMMEDIATE [SP] la page 495
SQL/92 Extension propritaire.

322
Chapitre 4. Instructions SQL

SQL/99 Extension propritaire.


Sybase Non compatible avec Adaptive Server Enterprise.

Windows CE Seule la syntaxe BACKUP DATABASE DIRECTORY


(syntaxe 1 ci-dessus) est supporte sur la plate-forme Windows CE.
Exemple Sauvegarde de la base de donnes et du journal de transactions actuel dans
un fichier, avec rednomination du journal de transactions existant ; une
sauvegarde dimage est cre :
BACKUP DATABASE
DIRECTORY d:\\temp\\backup
TRANSACTION LOG RENAME

Loption permettant de renommer le journal de transactions est


particulirement utile dans les environnements de rplication, o lancien
journal de transactions reste ncessaire.
Sauvegarde sur bande de la base de donnes et du journal de transactions
actuel :
BACKUP DATABASE
TO \\\\.\\tape0

Rednomination du journal sans copie de celui-ci :


BACKUP DATABASE DIRECTORY
TRANSACTION LOG ONLY
TRANSACTION LOG RENAME

Excution de linstruction BACKUP avec un nom de fichier construit


dynamiquement :
CREATE EVENT NightlyBackup
SCHEDULE
START TIME 23:00 EVERY 24 HOURS
HANDLER
BEGIN
DECLARE dest LONG VARCHAR;
DECLARE day_name CHAR(20);

SET day_name = DATENAME(WEEKDAY, CURRENT DATE);


SET dest = d:\\backups\\ || day_name;
BACKUP DATABASE DIRECTORY dest
TRANSACTION LOG RENAME;
END

323
Instruction BEGIN
Description Regrouper les instructions SQL.
Syntaxe [ tiquette_instruction : ]
BEGIN [ [ NOT ] ATOMIC ]
[ dclaration_locale; . . . ]
liste_instructions
[ EXCEPTION [ cas_exception . . . ] ]
END [ tiquette_instruction ]

dclaration_locale :
dclaration_variable
| dclaration_curseur
| dclaration_exception
| dclaration_table_temporaire

dclaration_variable :
DECLARE nom_variable type_donnes

dclaration_exception :
DECLARE nom_exception EXCEPTION
FOR SQLSTATE [ VALUE ] chane

cas_exception :
WHEN nom_exception [, . . . ] THEN liste_instructions
| WHEN OTHERS THEN liste_instructions
Paramtres dclaration_locale Immdiatement aprs le mot-cl BEGIN, une
instruction compose peut contenir des dclarations locales qui nexistent
quau sein de linstruction. Une dclaration locale peut concerner une
variable, un curseur, une table temporaire ou une exception. Les dclarations
locales peuvent tre rfrences par toute instruction de linstruction
compose ou dans toute instruction compose imbrique dans cette dernire.
Les dclarations locales ne sont pas visibles par les autres procdures
appeles partir dune instruction compose.
tiquette_instruction Si vous spcifiez ltiquette (tiquette_instruction )
de fin, elle doit correspondre ltiquette de dbut. Linstruction LEAVE
permet de reprendre lexcution la premire instruction qui suit
linstruction compose. Linstruction compose qui constitue le corps dune
procdure ou dun trigger est dote dune tiquette implicite identique au
nom de la procdure ou du trigger.
Pour une description complte des instructions composes et de la
gestion des exceptions, reportez-vous Utilisation des procdures, des
triggers et des batchs [ASA - Guide de lutilisateur SQL, page 701].
ATOMIC Une instruction atomique est excute intgralement ou pas du

324
Chapitre 4. Instructions SQL

tout. Par exemple, une instruction UPDATE mettant jour des milliers de
lignes peut rencontrer une erreur aprs avoir trait quelques centaines de
lignes : Si linstruction choue, toutes les modifications sont annules. De
mme, si vous indiquez que linstruction BEGIN est atomique, elle est
excute soit intgralement, soit pas du tout.
Utilisation Le corps dune procdure ou dun trigger est constitu dune instruction
compose. Vous pouvez galement utiliser les instructions composes dans
les instructions de contrle au sein dune procdure ou dun trigger.
Une instruction compose permet le regroupement dune ou de plusieurs
instructions SQL et leur traitement en tant quunit. Une instruction
compose commence par le mot-cl BEGIN et se termine par le mot-cl
END.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction DECLARE CURSOR [ESQL] [SP] la page 456
Instruction DECLARE LOCAL TEMPORARY TABLE la page 463
Instruction LEAVE la page 560
Instruction SIGNAL la page 654
Instruction RESIGNAL la page 607
Utilisation des procdures, des triggers et des batchs [ASA - Guide de
lutilisateur SQL, page 701]
Instructions composes atomiques [ASA - Guide de lutilisateur SQL,
page 729]

Normes et compatibilit SQL/92 Fonctionnalit de module stock de manire permanente.


SQL/99 Fonctionnalit de module stock de manire permanente.
Sybase Prise en charge par Adaptive Server Enterprise. La totalit des
instructions composes nest pas forcment supporte.
Les mots-cls BEGIN et END ne sont pas requis dans Transact-SQL.
Ils sont utiliss dans Transact-SQL pour regrouper un ensemble
dinstructions en une seule instruction compose, afin que les instructions
de contrle telles que IF ... ELSE, qui nont dincidence que sur
lexcution dune seule instruction SQL, puissent avoir des rpercussions
sur lexcution de lensemble du groupe. Adaptive Server Enterprise ne
reconnat pas le mot-cl ATOMIC.
Dans Transact-SQL, il nest pas ncessaire que les instructions
DECLARE suivent immdiatement un mot-cl BEGIN et le curseur ou la
variable qui est dclar existe pour la dure de linstruction compose.
Pour des raisons de compatibilit, dclarez les variables au dbut de
linstruction compose.

325
Exemple Le corps dune procdure ou dun trigger est constitu dune instruction
compose.
CREATE PROCEDURE TopCustomer (OUT TopCompany CHAR(35), OUT
TopValue INT)
BEGIN
DECLARE err_notfound EXCEPTION FOR
SQLSTATE 02000;
DECLARE curThisCust CURSOR FOR
SELECT company_name, CAST(
sum(sales_order_items.quantity *
product.unit_price) AS INTEGER) VALUE
FROM customer
LEFT OUTER JOIN sales_order
LEFT OUTER JOIN sales_order_items
LEFT OUTER JOIN product
GROUP BY company_name;
DECLARE ThisValue INT;
DECLARE ThisCompany CHAR(35);
SET TopValue = 0;
OPEN curThisCust;
CustomerLoop:
LOOP
FETCH NEXT curThisCust
INTO ThisCompany, ThisValue;
IF SQLSTATE = err_notfound THEN
LEAVE CustomerLoop;
END IF;
IF ThisValue > TopValue THEN
SET TopValue = ThisValue;
SET TopCompany = ThisCompany;
END IF;
END LOOP CustomerLoop;
CLOSE curThisCust;
END

326
Chapitre 4. Instructions SQL

Instruction BEGIN TRANSACTION


Description Lancer une transaction dfinie par lutilisateur.
Syntaxe BEGIN TRAN[SACTION] [ nom_transaction ]

Utilisation Le paramtre facultatif nom_transaction permet dattribuer un nom cette


transaction. Il doit sagir dun identificateur valable. Les noms de transaction
ne doivent tre employs que sur la paire la plus externe dinstructions
imbriques BEGIN/COMMIT ou BEGIN/ROLLBACK.
Lorsquelle est excute lintrieur dune transaction, linstruction BEGIN
TRANSACTION incrmente le niveau dimbrication dune unit. Le niveau
dimbrication est dcrment par le biais dune instruction COMMIT. En cas
dimbrication de transactions, seul le COMMIT le plus externe rend
permanentes les modifications apportes la base de donnes.
Adaptive Server Enterprise et Adaptive Server Anywhere ont deux modes de
transaction :
Le mode non chan dAdaptive Server Enterprise valide par dfaut chaque
instruction de faon individuelle, sauf si une instruction BEGIN
TRANSACTION explicite est excute pour lancer une transaction. A
linverse, le mode chan, compatible ISO SQL/92, ne valide une transaction
qu excution dune instruction COMMIT explicite ou dune instruction qui
procde un autocommit (telle quune instruction de dfinition de donnes).
Vous pouvez contrler le mode en dfinissant loption de base de donnes
CHAINED. Par dfaut, dans Adaptive Server Anywhere, la connexion
ODBC et Embedded SQL est sur ON, ce qui active Adaptive Server
Anywhere en mode chan. (Les utilisateurs ODBC doivent galement
vrifier le paramtre ODBC AutoCommit). Pour les connexions TDS, cette
option est dsactive par dfaut.
En mode non chan, une transaction est implicitement lance avant toute
instruction de lecture ou de modification de donnes. Ces instructions
incluent les lments suivants : DELETE, INSERT, OPEN, FETCH,
SELECT et UPDATE. Pour mettre fin cette transaction, il est ncessaire
dexcuter un COMMIT ou un ROLLBACK.
Il nest pas possible de modifier loption CHAINED au sein dune
transaction.

Attention
Avant dappeler une procdure stocke, vous devez vous assurer quelle
fonctionne correctement dans le mode transactionnel requis.
Pour plus dinformations, reportez-vous la section Option CHAINED

327
[compatibilit] [ASA - Guide dadministration, page 698].
Le niveau dimbrication actuel est stock dans la variable globale
@@trancount. Cette variable a la valeur 0 avant le lancement de la
premire instruction BEGIN TRANSACTION et seul un COMMIT excut
lorsque @@trancount est gale 1 est en mesure de rendre permanentes les
modifications apportes la base de donnes.
Une instruction ROLLBACK sans nom de transaction ou de point de
sauvegarde annule toujours la totalit des instructions correspondant au
BEGIN TRANSACTION (explicite ou implicite) le plus externe.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction COMMIT la page 341
Option ISOLATION_LEVEL [compatibilit] [ASA - Guide
dadministration, page 717]
Instruction ROLLBACK la page 621
Instruction SAVEPOINT la page 626
Points de sauvegarde dans les transactions [ASA - Guide de lutilisateur
SQL, page 117]
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Prise en charge par Adaptive Server Enterprise.
Exemple Le batch ci-aprs affiche les valeurs successives de @@trancount 0, 1, 2, 1,
0. Ces valeurs sont affiches dans la fentre du serveur.
PRINT @@trancount
BEGIN TRANSACTION
PRINT @@trancount
BEGIN TRANSACTION
PRINT @@trancount
COMMIT
PRINT @@trancount
COMMIT
PRINT @@trancount

La variable @@trancount ne doit servir qu connatre le nombre des


instructions BEGIN TRANSACTION mises de faon explicite.
Lorsque Adaptive Server Enterprise lance implicitement une transaction, la
variable @@trancount est dfinie 1. Or, Adaptive Server Anywhere ne
dfinit pas la valeur de @@trancount 1 en cas de dmarrage implicite
dune transaction. En consquence, la variable @@trancount dAdaptive
Server Anywhere a une valeur gale zro (0) devant toute instruction

328
Chapitre 4. Instructions SQL

BEGIN TRANSACTION (mme sil existe une transaction en cours), alors


que dans Adaptive Server Enterprise (en mode chained) elle a la valeur 1.
Lorsquune transaction est lance avec une instruction BEGIN
TRANSACTION, @@trancount prend la valeur 1 dans Adaptive Server
Anywhere et dans Adaptive Server Enterprise aprs la premire instruction
BEGIN TRANSACTION. Si une transaction est lance implicitement avec
une instruction diffrente et quune instruction BEGIN TRANSACTION est
ensuite excute, @@trancount renvoie 2 dans Adaptive Server Anywhere
et Adaptive Server Enterprise aprs linstruction BEGIN TRANSACTION.

329
Instruction CALL
Description Appeler une procdure.
Syntaxe 1 [variable = ] CALL nom_procdure ( [ expression, . . . ] )

Syntaxe 2 [variable = ] CALL nom_procdure ( [ nom_paramtre = expression, . . . ] )

Utilisation Linstruction CALL appelle une procdure prcdemment cre laide


dune instruction CREATE PROCEDURE. Une fois la procdure termine,
toutes les valeurs des paramtres INOUT ou OUT sont recopies.
Vous pouvez spcifier la liste darguments en fonction de la position ou en
utilisant un format de mot-cl. Dans le premier cas, les arguments
correspondent aux paramtres adquats dans la liste des paramtres de la
procdure. Dans le second cas, les arguments correspondent aux paramtres
nomms.
Vous pouvez attribuer des valeurs par dfaut aux arguments de la procdure
dans linstruction CREATE PROCEDURE ; la valeur par dfaut est attribue
aux paramtres manquants. Si aucune valeur par dfaut nest dfinie et
quaucun argument nest fourni, une erreur est gnre.
Au sein dune procdure, une instruction CALL est utilisable dans une
instruction DECLARE lorsque la procdure renvoie des jeux de rsultats
(reportez-vous Renvoi de rsultats partir de procdures [ASA - Guide de
lutilisateur SQL, page 735]).

Les procdures peuvent renvoyer une valeur dentier (un indicateur dtat
par exemple) laide de linstruction RETURN. Vous pouvez enregistrer
cette valeur renvoye dans une variable, avec le signe dgalit comme
oprateur daffectation :
CREATE VARIABLE returnval INT;
returnval = CALL proc_integer ( arg1 = val1, ... )

Pour plus dinformations sur le renvoi de valeurs ntant pas des entiers,
reportez-vous la section Instruction CREATE FUNCTION la page 376.
Autorisations Vous devez tre le propritaire de la procdure, dtenir lautorisation
EXECUTE pour cette procdure ou les droits DBA (administrateur de la
base de donnes).
Effets secondaires Aucun.
Voir aussi Instruction CREATE PROCEDURE la page 390
Instruction GRANT la page 524
Instruction EXECUTE [T-SQL] la page 493

330
Chapitre 4. Instructions SQL

Utilisation des procdures, des triggers et des batchs [ASA - Guide de


lutilisateur SQL, page 701]

Normes et compatibilit SQL/92 Fonctionnalit de module stock de manire permanente.


SQL/99 Fonctionnalit de module stock de manire permanente.

Sybase Non prise en charge par Adaptive Server Enterprise. Pour


connatre une autre norme prise en charge, reportez-vous la section
Instruction EXECUTE [T-SQL] la page 493.
Exemple Appel de la procdure sp_customer_list. Cette procdure ne contient aucun
paramtre et renvoie un jeu de rsultats.
CALL sp_customer_list()

Lexemple Interactive SQL suivant cre une procdure qui renvoie le nombre
de commandes passes par le client dont lID est fourni, cre une variable
pour contenir le rsultat, appelle la procdure et affiche le rsultat :
CREATE PROCEDURE OrderCount (IN customer_ID INT, OUT Orders INT)
BEGIN
SELECT COUNT("DBA".sales_order.id)
INTO Orders
FROM "DBA".customer
KEY LEFT OUTER JOIN "DBA".sales_order
WHERE "DBA".customer.id = customer_ID;
END
go
-- Create a variable to hold the result
CREATE VARIABLE Orders INT
go
-- Call the procedure, FOR customer 101
CALL OrderCount ( 101, Orders)
go
-- Display the result
SELECT Orders FROM DUMMY
go

331
Instruction CASE
Description Slectionner le chemin dexcution (plusieurs cas).
Syntaxe 1 CASE expression_valeur
WHEN [ constante | NULL ] THEN liste_instructions . . .
[ WHEN [ constante | NULL ] THEN liste_instructions ] . . .
[ ELSE liste_instructions ]
END CASE
Syntaxe 2 CASE
WHEN [ condition_recherche | NULL] THEN liste_instructions . . .
[ WHEN [ condition_recherche | NULL] THEN liste_instructions ] . . .
[ ELSE liste_instructions ]
END CASE
Utilisation Syntaxe 1 CASE est une instruction de commande qui permet de choisir
une liste dinstructions SQL excuter en fonction de la valeur dune
expression. Largument valeur_expression est une expression qui prend une
seule valeur, pouvant tre une chane, un nombre, une date ou un autre type
de donnes SQL. Si une clause WHEN existe pour la valeur
expression_valeur, la liste_instructions de la clause WHEN est excute. Si
aucune clause WHEN nexiste mais quune clause ELSE existe, la
liste_instructions de la clause ELSE est excute. Lexcution reprend la
premire instruction qui suit END CASE.
Si lexpression expression_valeur peut tre dfinie avec la valeur NULL,
utilisez la fonction ISNULL pour la remplacer par une autre expression.
Pour plus dinformations sur la fonction ISNULL, reportez-vous la section
ISNULL (fonction de conversion de types de donnes) la page 176.
Syntaxe 2 Sous cette forme, les instructions sont excutes la premire
condition de recherche (condition_recherche ) remplie dans linstruction
CASE. La clause ELSE est excute si aucune des conditions de recherche
nest remplie.
Si lexpression peut tre dfinie avec la valeur NULL, utilisez la syntaxe
suivante pour la premire condition de recherche :
WHEN search-condition IS NULL THEN statement-list

Pour plus dinformations sur les valeurs NULL, reportez-vous la


section Valeurs inconnues : NULL [ASA - Guide de lutilisateur SQL,
page 255].

332
Chapitre 4. Instructions SQL

Linstruction CASE est diffrente de lexpression CASE


Ne confondez pas la syntaxe de linstruction CASE avec celle de lexpres-
sion CASE.
Pour plus dinformations sur lexpression CASE, reportez-vous la section
Expressions CASE la page 20.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction BEGIN la page 324
Utilisation des procdures, des triggers et des batchs [ASA - Guide de
lutilisateur SQL, page 701]

Normes et compatibilit SQL/92 Fonctionnalit de module stock de manire permanente.


Adaptive Server Anywhere supporte linstruction CASE acceptant les
valeurs WHEN NULL. Il sagit dune extension propritaire de la norme
SQL/92.
SQL/99 Fonctionnalit de module stock de manire permanente.
Adaptive Server Anywhere supporte linstruction CASE acceptant les
valeurs WHEN NULL. Il sagit dune extension propritaire de la norme
SQL/92.

Sybase Non prise en charge par Adaptive Server Enterprise.

Exemple La procdure suivante qui fait appel une instruction CASE tablit le
classement suivant pour les produits rpertoris dans la table product de la
base de donnes exemple : shirt, hat, shorts ou unknown.
CREATE PROCEDURE ProductType (IN product_id INT, OUT type
CHAR(10))
BEGIN
DECLARE prod_name CHAR(20);
SELECT name INTO prod_name FROM "DBA"."product"
WHERE id = product_id;
CASE prod_name
WHEN Tee Shirt THEN
SET type = Shirt
WHEN Sweatshirt THEN
SET type = Shirt
WHEN Baseball Cap THEN
SET type = Hat
WHEN Visor THEN
SET type = Hat
WHEN Shorts THEN
SET type = Shorts
ELSE
SET type = UNKNOWN
END CASE;
END

333
Lexemple suivant utilise la syntaxe 2 pour gnrer un message sur la
quantit de produits au sein de la base de donnes exemple :
CREATE PROCEDURE StockLevel (IN product_id INT)
BEGIN
DECLARE qty INT;
SELECT quantity INTO qty FROM product
WHERE id = product_id;
CASE
WHEN qty < 30 THEN
MESSAGE Order Stock TO CLIENT;
WHEN qty > 100 THEN
MESSAGE Overstocked TO CLIENT;
ELSE
MESSAGE Sufficient stock on hand TO CLIENT;
END CASE;
END

334
Chapitre 4. Instructions SQL

Instruction CHECKPOINT
Description Dfinir un point de reprise pour la base de donnes.
Syntaxe CHECKPOINT

Utilisation Linstruction CHECKPOINT force le serveur de base de donnes excuter


un point de reprise. Des points de reprise sont galement excuts
automatiquement par le serveur de base de donnes suivant un algorithme
interne. Il nest en gnral pas ncessaire quune application mette une
instruction CHECKPOINT.
Pour une description complte des points de reprise, reportez-vous la
section Sauvegarde et reprise [ASA - Guide dadministration, page 407].
Autorisations Les droits DBA sont ncessaires pour dfinir un point de reprise sur le
serveur de base de donnes rseau.
Pour le serveur personnel de base de donnes, aucune autorisation nest
requise.
Effets secondaires Aucun.
Voir aussi Option CHECKPOINT_TIME [base de donnes] [ASA - Guide
dadministration, page 698]
Option RECOVERY_TIME [base de donnes] [ASA - Guide
dadministration, page 747]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.

Sybase Prise en charge par Adaptive Server Enterprise.

335
Instruction CLEAR [Interactive SQL]
Description Effacer les volets dInteractive SQL.
Syntaxe CLEAR

Utilisation Linstruction CLEAR permet deffacer le volet Instructions SQL, le volet


Messages et les onglets Rsultats, Messages, Plan et Plan UltraLite du volet
Rsultats.
Autorisations Aucune.
Effets secondaires Ferme le curseur associ aux donnes effaces.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non applicable.

336
Chapitre 4. Instructions SQL

Instruction CLOSE [ESQL] [SP]


Description Fermer un curseur.
Syntaxe CLOSE nom_curseur

nom_curseur : identificateur | var_hte

Utilisation Cette instruction ferme le curseur nomm.


Autorisations Le curseur doit avoir t prcdemment ouvert.
Effets secondaires Aucun.
Voir aussi Instruction OPEN [ESQL] [SP] la page 579
Instruction DECLARE CURSOR [ESQL] [SP] la page 456
Instruction PREPARE [ESQL] la page 589
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.
SQL/99 Fonction principale.
Sybase Prise en charge par Adaptive Server Enterprise.
Exemple Les exemples ci-aprs ferment des curseurs dans Embedded SQL.
EXEC SQL CLOSE employee_cursor;
EXEC SQL CLOSE :cursor_var;

La procdure suivante utilise un curseur :

337
CREATE PROCEDURE TopCustomer (OUT TopCompany CHAR(35), OUT
TopValue INT)
BEGIN
DECLARE err_notfound EXCEPTION
FOR SQLSTATE 02000;
DECLARE curThisCust CURSOR FOR
SELECT company_name, CAST( sum(sales_order_items.quantity
*
product.unit_price) AS INTEGER) VALUE
FROM customer
LEFT OUTER JOIN sales_order
LEFT OUTER JOIN sales_order_items
LEFT OUTER JOIN product
GROUP BY company_name;
DECLARE ThisValue INT;
DECLARE ThisCompany CHAR(35);
SET TopValue = 0;
OPEN curThisCust;
CustomerLoop:
LOOP
FETCH NEXT curThisCust
INTO ThisCompany, ThisValue;
IF SQLSTATE = err_notfound THEN
LEAVE CustomerLoop;
END IF;
IF ThisValue > TopValue THEN
SET TopValue = ThisValue;
SET TopCompany = ThisCompany;
END IF;
END LOOP CustomerLoop;
CLOSE curThisCust;
END

338
Chapitre 4. Instructions SQL

Instruction COMMENT
Description Enregistrer un commentaire dans les tables systme pour un objet de base de
donnes.
Syntaxe COMMENT ON
{
COLUMN [ propritaire.]nom_table.nom_colonne
| EVENT nom_vnement
| FOREIGN KEY [ propritaire.]nom_table.nom_role
| INDEX [ [ propritaire.] table.]nom_index
| JAVA CLASS nom_classe_java
| JAVA JAR nom_jar_java
| LOGIN id_login_intgr
| PROCEDURE [ propritaire.]nom_procdure
| SERVICE nom_service_web
| TABLE [ propritaire.]nom_table
| TRIGGER [ [ propritaire.]nom_table.]nom_trigger
| USER ID_utilisateur
| VIEW [ propritaire.]nom_vue
}
IS commentaire
commentaire : chane | NULL

Utilisation Plusieurs tables systme disposent dune colonne appele Remarks, qui vous
permet dassocier un commentaire un lment de la base de donnes
(SYSUSERPERM, SYSTABLE, SYSCOLUMN, SYSINDEX, SYSLOGIN,
SYSFOREIGNKEY, SYSPROCEDURE et SYSTRIGGER). Linstruction
COMMENT ON permet de dfinir la colonne Remarks dans ces tables
systme. Pour supprimer un commentaire, attribuez-lui la valeur NULL.
Lorsque vous ajoutez un commentaire dans un index ou dans un trigger, son
propritaire est celui de la table sur laquelle est dfini lindex ou le trigger.
Autorisations Vous devez soit tre le propritaire de lobjet de base de donnes faisant
lobjet dun commentaire, soit dtenir les droits DBA (administrateur de la
base de donnes).
Effets secondaires Commit automatique.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Les exemples ci-aprs montrent comment ajouter ou supprimer un
commentaire.

339
Ajout dun commentaire dans la table employee :
COMMENT
ON TABLE employee
IS Employee information

Suppression dun commentaire de la table employee :


COMMENT
ON TABLE employee
IS NULL

340
Chapitre 4. Instructions SQL

Instruction COMMIT
Description Rendre permanentes des modifications apportes la base de donnes ou
mettre fin une transaction dfinie par lutilisateur.
Syntaxe 1 COMMIT [ WORK ]

Syntaxe 2 COMMIT TRAN[SACTION] [ nom_transaction ]

Paramtres nom_transaction Nom facultatif affect cette transaction. Il doit sagir


dun identificateur valable. Les noms de transaction ne doivent tre
employs que sur la paire la plus externe dinstructions imbriques
BEGIN/COMMIT ou BEGIN/ROLLBACK.
Pour plus dinformations sur limbrication de transactions dans
Adaptive Server Enterprise et Adaptive Server Anywhere, reportez-vous la
section Instruction BEGIN TRANSACTION la page 327. Pour plus
dinformations sur les points de sauvegarde, reportez-vous la section
Instruction SAVEPOINT la page 626.
Vous pouvez spcifier un ensemble doptions pour contrler le
comportement dtaill de linstruction COMMIT. Pour plus dinformations,
reportez-vous aux sections Option
COOPERATIVE_COMMIT_TIMEOUT [base de donnes] [ASA - Guide
dadministration, page 703], Option COOPERATIVE_COMMITS [base de
donnes] [ASA - Guide dadministration, page 703], Option
DELAYED_COMMITS [base de donnes] [ASA - Guide dadministration,
page 709] et Option DELAYED_COMMIT_TIMEOUT [base de donnes]
[ASA - Guide dadministration, page 708]. Vous pouvez avoir recours la
proprit de connexion Commit pour renvoyer le nombre de Commits sur la
connexion courante.
Utilisation Syntaxe 1 Linstruction COMMIT met fin une transaction et rend
permanentes toutes les modifications apportes la base de donnes au
cours de cette transaction.
Les instructions de dfinition de donnes excutent toutes automatiquement
une validation. Pour plus dinformations, reportez-vous la liste des Effets
secondaires pour chaque instruction SQL.
Linstruction COMMIT choue si le serveur de base de donnes dtecte une
cl trangre incorrecte. Il est alors impossible de mettre fin une
transaction. En gnral, lintgrit de la cl trangre est vrifie chaque
manipulation de donnes. Cependant, si loption de base de donnes
WAIT_FOR_COMMIT est active ou si une cl trangre particulire a t
dfinie avec une clause CHECK ON COMMIT, le serveur de base de
donnes ne vrifie pas lintgrit tant que linstruction COMMIT na pas t

341
excute.
Syntaxe 2 Vous pouvez utiliser les instructions BEGIN TRANSACTION
et COMMIT TRANSACTION en paires pour tablir des transactions
imbriques. Les transactions imbriques sont similaires des points de
sauvegarde. Lorsquelle est excute comme la transaction la plus externe
dun ensemble de transactions imbriques, lexcution rend permanentes les
modifications apportes la base de donnes. Lorsquelle est excute
lintrieur dune transaction, linstruction COMMIT TRANSACTION
dcrmente le niveau dimbrication. En cas dimbrication de transactions,
seul le COMMIT le plus externe rend permanentes les modifications
apportes la base de donnes.
Autorisations Aucune.
Effets secondaires Ferme tous les curseurs hormis ceux ouverts avec WITH HOLD.
Supprime toutes les lignes des tables temporaires dclares, sauf si elles ont
t dclares laide de ON COMMIT PRESERVE ROWS..
Voir aussi Instruction BEGIN TRANSACTION la page 327
Instruction PREPARE TO COMMIT la page 592
Instruction ROLLBACK la page 621
Normes et compatibilit SQL/92 La syntaxe 1 est une fonctionnalit dentre de gamme. La
syntaxe 2 constitue une extension Transact-SQL.
SQL/99 La syntaxe 1 est une fonction principale. La syntaxe 2 constitue
une extension Transact-SQL.

Sybase Prise en charge par Adaptive Server Enterprise.


Exemple Linstruction suivante valide la transaction courante :
COMMIT

Le batch Transact-SQL suivant affiche les valeurs successives de


@@trancount :
PRINT @@trancount
BEGIN TRANSACTION
PRINT @@trancount
BEGIN TRANSACTION
PRINT @@trancount
COMMIT TRANSACTION
PRINT @@trancount
COMMIT TRANSACTION
PRINT @@trancount
go

342
Chapitre 4. Instructions SQL

Instruction CONFIGURE [Interactive SQL]


Description Ouvrir la bote de dialogue Options dInteractive SQL.
Syntaxe CONFIGURE

Utilisation Linstruction CONFIGURE ouvre la bote de dialogue Options


dInteractive SQL. Cette fentre affiche les paramtres courants de toutes les
options Interactive SQL. Elle naffiche cependant pas les options de base de
donnes et ne vous permet pas de les modifier.
Vous pouvez configurer Interactive SQL dans cette bote de dialogue. Si
vous slectionnez Rendre permanent, les options sont enregistres et seront
utilises dans les sessions Interactive SQL ultrieures. Si vous ne choisissez
pas Rendre permanent, mais que vous cliquez sur OK, les options sont
dfinies de faon temporaire et ne restent en vigueur que pour la connexion
courante.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction SET OPTION la page 644
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.

343
Instruction CONNECT [ESQL] [Interactive SQL]
Description Etablir une connexion une base de donnes.
Syntaxe 1 CONNECT
[ TO nom_moteur ]
[ DATABASE nom_basededonnes ]
[ AS nom_connexion ]
[ USER ] id_utilisateur IDENTIFIED BY mdp

nom_moteur , nom_base_de_donnes, nom_connexion, id_utilisateur , mot_de_


passe :
{ identificateur | chane | var_hte }

Syntaxe 2 CONNECT USING chane_connexion

chane_connexion : { identificateur | chane | var_hte }

Paramtres Clause AS Vous pouvez ventuellement nommer une connexion en


spcifiant la clause AS. Cela permet dtablir simultanment plusieurs
connexions la mme base de donnes, aux mmes serveurs de bases de
donnes ou des serveurs de bases de donnes diffrents. Chaque connexion
a sa propre transaction associe. Des conflits de verrouillage entre vos
transactions risquent dailleurs dapparatre si, par exemple, vous tentez de
modifier le mme enregistrement dans une base de donnes partir de deux
connexions diffrentes.
Syntaxe 2 Une chane_connexion est une liste de paramtres dfinis sous
la forme keyword=valeur, spars par des points-virgules. Elle doit
galement figurer entre apostrophes.
Pour plus dinformations sur les chanes de connexion, reportez-vous
la section Paramtres de connexion [ASA - Guide dadministration, page 198].
Utilisation Linstruction CONNECT tablit une connexion la base de donnes
identifie par nom_base_de_donnes et excute sur le serveur identifi par
nom_moteur.
Comportement dEmbedded SQL Avec Embedded SQL, si aucun
nom_moteur nest spcifi, le serveur de base de donnes local par dfaut
est adopt (cest--dire le premier serveur de base de donnes dmarr). Si
aucun nom_base_de_donnes nest spcifi, la premire base de donnes du
serveur spcifi est adopte.
Linstruction WHENEVER, SET SQLCA et certaines instructions
DECLARE ne gnrent pas de code et peuvent donc apparatre avant
linstruction CONNECT dans le fichier source. Aucune autre instruction
nest autorise tant quune instruction CONNECT na pas t excute

344
Chapitre 4. Instructions SQL

correctement.
LID utilisateur et le mot de passe permettent de vrifier les autorisations sur
toutes les instructions SQL dynamiques.
Vous pouvez vous connecter sans mot de passe explicite en utilisant une
variable hte pour le mot de passe et en dfinissant la valeur de la variable
hte comme pointeur NULL.
Si vous tes connect un ID utilisateur avec droits DBA, vous pouvez vous
connecter un autre ID utilisateur sans prciser de mot de passe. (La sortie
de dbtran requiert cette fonctionnalit.)
Pour plus dinformations sur lalgorithme de connexion, reportez-vous
la section Rsolution des problmes de connexion [ASA - Guide
dadministration, page 72].

Remarque
Pour Adaptive Server Anywhere, seule la syntaxe 1 est correcte avec
Embedded SQL. Pour UltraLite, la syntaxe 1 et la syntaxe 2 peuvent
sutiliser avec Embedded SQL.
Comportement dInteractive SQL Si aucune base de donnes ni aucun
serveur nest spcifi dans linstruction CONNECT, Interactive SQL reste
connect la base de donnes courante et ne se connecte ni au serveur ni la
base de donnes par dfaut. Si un nom de base de donnes est spcifi sans
nom de serveur, Interactive SQL tente de se connecter la base de donnes
spcifie sur le serveur courant. Si un nom de serveur est spcifi sans nom
de base de donnes, Interactive SQL se connecte la base de donnes par
dfaut sur le serveur spcifi.
Par exemple, si le batch suivant est excut pendant la connexion une base
de donnes, les deux tables sont cres dans la mme base de donnes :
CREATE TABLE t1( c1 int );
CONNECT DBA IDENTIFIED BY SQL;
CREATE TABLE t2 (c1 int );

Aucune autre instruction de base de donnes nest autorise tant quune


instruction CONNECT na pas t excute correctement.
Dans linterface utilisateur, si le mot de passe ou lID utilisateur et le mot de
passe ne sont pas spcifis, lutilisateur est invit saisir les informations
manquantes.
Si vous excutez Interactive SQL en mode dinvite de commandes (loption
-nogui est spcifie lorsque vous lancez Interactive SQL partir dune invite
de commandes) ou en mode batch ou si vous excutez CONNECT sans

345
clause AS, une connexion non nomme souvre. Si une connexion non
nomme est dj ouverte, elle est automatiquement ferme. Sinon, les
connexions existantes ne sont pas fermes lorsque vous excutez
CONNECT.
La gestion des connexions multiples est effectue par la connexion courante.
Aprs une instruction de connexion russie, la nouvelle connexion devient la
connexion courante. Pour passer une autre connexion, utilisez linstruction
SET CONNECTION. Linstruction DISCONNECT permet de supprimer
des connexions.
Dans Interactive SQL, les informations de connexion (ainsi que le nom de la
base de donnes, votre ID utilisateur et le serveur) apparaissent dans la barre
de titre, au-dessus de la fentre Instructions SQL. Si vous ntes pas
connect une base de donnes, le message Non connect saffiche dans la
barre de titre.

Remarque
Les syntaxes 1 et 2 peuvent sappliquer avec Interactive SQL.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction GRANT la page 524
Instruction DISCONNECT [ESQL] [Interactive SQL] la page 473
Instruction SET CONNECTION [Interactive SQL] [ESQL] la
page 641
Instruction SETUSER la page 652
Paramtres de connexion [ASA - Guide dadministration, page 198]
Normes et compatibilit SQL/92 La syntaxe 1 est une fonction SQL complte. La syntaxe 2 est
une extension propritaire.

SQL/99 La syntaxe 1 est une fonction principale/SQL extrieure au


langage SQL basique. La syntaxe 2 est une extension propritaire.

Sybase Open Client Embedded SQL prend en charge une autre syntaxe
pour linstruction CONNECT.

Exemples Exemples dutilisation de CONNECT au sein dEmbedded SQL.


EXEC SQL CONNECT AS :conn_name
USER :userid IDENTIFIED BY :password;
EXEC SQL CONNECT USER "DBA" IDENTIFIED BY "SQL";

Les exemples ci-aprs supposent que la base de donnes exemple


(asademo.db ) est dj lance.

346
Chapitre 4. Instructions SQL

Connectez-vous une base de donnes partir dInteractive SQL.


Interactive SQL vous invite saisir un ID utilisateur et un mot de passe.
CONNECT

Connectez-vous la base de donnes par dfaut en tant quadministrateur


partir dInteractive SQL. Interactive SQL vous invite saisir un mot de
passe.
CONNECT USER "DBA"

Connectez-vous la base de donnes exemple en tant quadministrateur


partir dInteractive SQL.
CONNECT
TO asademo
USER DBA
IDENTIFIED BY SQL

Connectez-vous la base de donnes exemple laide dune chane de


connexion partir dInteractive SQL.
CONNECT
USING UID=DBA;PWD=SQL;DBN=asademo

Une fois que vous tes connect la base de donnes exemple, le nom de la
base de donnes, votre ID utilisateur et le nom du serveur saffichent sur la
barre de titre : asademo (DBA) on asademo9.

347
Instruction CREATE COMPRESSED DATABASE
(dconseille)
Description Crer une base de donnes compacte partir dun fichier de base de
donnes existant, ou dvelopper une base compacte.

Instruction dconseille
Lutilisation de bases de donnes compactes est dconseille.
Syntaxe CREATE [ COMPRESSED | EXPANDED ] DATABASE nou-
veau_nom_fichier_base
FROM ancien_nom_fichier_base [ KEY cl ]

Utilisation Cre un fichier de base de donnes compact partir dun fichier de base de
donnes non compact ou linverse.
Tout chemin daccs relatif est relatif au rpertoire de travail courant du
serveur.
Nutilisez pas cette instruction sur des fichiers autres que le fichier de base
de donnes principal .

Attention
Le compactage dune base de donnes crypte entrane son dcryptage.
Autorisations Les autorisations requises pour excuter cette instruction sont dfinies via
la ligne de commande du serveur, avec loption -gu. Par dfaut, les droits
DBA sont requis.
Le compte du systme dexploitation sous lequel le serveur est en cours
dexcution doit avoir le droit dcriture sur les rpertoires o sont crs
les fichiers.

Lancien fichier de base de donnes ne doit pas tre en cours dexcution.

Non prise en charge par Windows CE.


Vous devez spcifier une cl si vous souhaitez crer une base de donnes
compacte pour une base de donnes crypte fortement.
Effets secondaires Un fichier systme dexploitation est cr.
Voir aussi Utilitaire de compactage dune base de donnes (dconseill) [ASA -
Guide dadministration, page 551]
Utilitaire de dcompactage dune base de donnes (dconseill) [ASA -
Guide dadministration, page 638]

348
Chapitre 4. Instructions SQL

Paramtre de connexion DatabaseKey [DBKEY] [ASA - Guide


dadministration, page 210]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Exemple Linstruction suivante cre le fichier de base de donnes compact
compress.db dans le rpertoire C:\ depuis le fichier de base de donnes
full.db se trouvant dans le rpertoire de travail courant du serveur :
CREATE COMPRESSED DATABASE C:\\compress.db
FROM full.db

Linstruction suivante cre le fichier de base de donnes non compact


full.db dans le rpertoire C:\ depuis le fichier de base de donnes compact
compress.db se trouvant dans le rpertoire de travail actuel du serveur :
CREATE EXPANDED DATABASE C:\\full.db
FROM compress.db

349
Instruction CREATE DATABASE
Description Crer une base de donnes. La base de donnes est stocke en tant que
fichier du systme dexploitation.
Syntaxe CREATE DATABASE nom_fichier_base
[ [ TRANSACTION ] { LOG OFF | LOG ON } [ chane_nom_journal ]
[ MIRROR chane_nom_fichier_miroir ] ]
[ CASE { RESPECT | IGNORE } ]
[ PAGE SIZE taille_page ]
[ COLLATION libell_classement ]
[ ENCRYPTED { ON | OFF | spcif_cl } ]
[ BLANK PADDING { ON | OFF } ]
[ ASE [ COMPATIBLE ] ]
[ JAVA { ON | OFF | JDK { 1.1.8 | 1.3 } } ]
[ JCONNECT { ON | OFF } ]
[ PASSWORD CASE { RESPECT | IGNORE } ]
[ CHECKSUM { ON | OFF } ]
]

taille_page :
1024 | 2048 | 4096 | 8192 | 16384 | 32768
libell_classement : chane

spcif_cl :
[ ON ] KEY cl [ ALGORITHM { AES | AES_FIPS } ]

Paramtres Nom du fichier Les noms de fichiers (chane_nom_fichier_base,


chane_nom_journal_transactions, chane_nom_fichier_miroir ) sont des
chanes contenant des noms de fichiers systme dexploitation. En tant que
chanes littrales, elles doivent tre encadres par des apostrophes.
Si vous indiquez un chemin, les barres obliques inverses (\) doivent tre
doubles si elles sont suivies dun n ou dun x. Cet chappement
empche de les interprter comme des caractres de nouvelle ligne (\n)
ou des nombres hexadcimaux (\x), conformment aux rgles de
formation des chanes dans SQL.
Il est plus sr de toujours doubler les barres obliques inverses. Par
exemple :
CREATE DATABASE c:\\sybase\\my_db.db
LOG ON e:\\logdrive\\my_db.log

Si vous ne spcifiez pas de chemin, pas mme un chemin relatif, le fichier


de base de donnes est cr par rapport au rpertoire de travail du serveur.
Si vous ne spcifiez pas de chemin pour le journal de transactions,
celui-ci est cr dans le mme rpertoire que le fichier de base de

350
Chapitre 4. Instructions SQL

donnes.
Si vous ne fournissez aucune extension de fichier, le fichier cr porte
lextension .db pour des bases de donnes, .log pour le journal de
transactions ou .mlg pour le journal en miroir.
Clause TRANSACTION LOG Le journal de transactions est un fichier dans
lequel le serveur de base de donnes consigne toutes les modifications
apportes la base de donnes. Le journal de transactions joue un rle
essentiel dans les sauvegardes et les restaurations (reportez-vous Journal
de transactions [ASA - Guide dadministration, page 413]), ainsi que dans la
rplication de donnes.
Clause MIRROR Un miroir de journal de transactions est une copie
conforme du journal de transactions, gnralement stocke sur un device
distinct et destine assurer une meilleure protection de vos donnes. Par
dfaut, Adaptive Server Anywhere nemploie pas de miroir. Si vous en
souhaitez un, cette option vous permet de dfinir son nom.
Clause CASE Pour les bases de donnes cres avec loption CASE
RESPECT, la distinction majuscules/minuscules sapplique toutes les
valeurs lors des comparaisons et des oprations sur les chanes.
Cette option est propose pour la compatibilit avec la norme SQL
ISO/ANSI. La valeur par dfaut de cette option est CASE IGNORE ;
cest--dire que la distinction majuscules/minuscules nexiste pas pour les
comparaisons. Les ID utilisateur et les autres identificateurs de la base de
donnes ne font pas la distinction entre majuscules et minuscules, mme
dans des bases de donnes qui oprent cette distinction.
Clause PAGE SIZE La taille dune page dune base de donnes peut tre
1024, 2048, 4096, 8192, 16384 ou 32768 octets. La valeur par dfaut est
2048 octets. Les bases de donnes volumineuses tirent gnralement
davantage parti dune taille de page plus leve, mais un certain
ralentissement peut galement y tre li.
Pour plus dinformations, reportez-vous la section Options de
lutilitaire Informations [ASA - Guide dadministration, page 575].
Par exemple :
CREATE DATABASE c:\\sybase\\my_db.db
PAGE SIZE 4096

351
Limite de taille de page
Une page ne peut pas tre plus grande que celle utilise par le serveur
courant. La taille de la page du serveur est issue du premier ensemble
de bases de donnes charg ou dfinie depuis la ligne de commande du
serveur, via loption -gp.
Clause COLLATION Squence de classement utilise pour toutes les
comparaisons de chane dans la base de donnes.
Si vous souhaitez crer un classement personnalis, ayez recours
lutilitaire de classement pour crer un fichier contenant le classement. Une
fois que vous avez modifi le classement et que vous lavez insr dans les
scripts appropris, vous pouvez crer la base de donnes et spcifier le
nouveau classement. Vous devez changer le libell de classement dans le
fichier de classement personnalis, dfaut de quoi vous ne pourrez pas
crer de base de donnes utilisant le nouveau classement puisquil sera en
conflit avec un classement existant.
Pour plus dinformations sur la personnalisation des squences de
classement, reportez-vous la section Langues internationales et jeux de
caractres [ASA - Guide dadministration, page 349].
Pour plus dinformations sur lutilitaire de classement, reportez-vous
la section Utilitaire de classement [ASA - Guide dadministration, page 547].
Si vous ne spcifiez pas de classement, cest le classement par dfaut qui est
utilis. Un ordre ASCII (binaire) normal est utilis pour les 128 premiers
caractres, pour lesquels sapplique la distinction entre majuscules et
minuscules (-c). Pour les 128 autres (galement appels caractres tendus),
tout caractre reprsentant la forme accentue dune lettre ASCII a la mme
position de tri que sa forme non accentue. Pour dterminer si un caractre
tendu est une lettre accentue ou non, lutilitaire se sert de la page de code
850 (multilingue).
Pour obtenir la liste des libells des squences de classement
disponibles, reportez-vous la section Prsentation des classements [ASA -
Guide dadministration, page 367].

Clause ENCRYPTED Le cryptage rend illisibles les donnes stockes dans


votre fichier de base de donnes physique. Il existe deux niveaux de cryptage
:
Le cryptage simple est lquivalent du brouillage. Les donnes sont
illisibles, mais une personne ayant des connaissances approfondies dans la
cryptographie pourrait dcrypter les donnes. Le cryptage simple est activ
en spcifiant la clause ENCRYPTED sans clause KEY.
Le cryptage fort seffectue par lintermdiaire dun algorithme AES de

352
Chapitre 4. Instructions SQL

128 bits et dune cl de scurit. Les donnes sont illisibles et pratiquement


indchiffrables sans cl. Pour crer une base de donnes crypte fortement,
spcifiez la clause ENCRYPTED avec loption KEY. Comme avec la plupart
des mots de passe, il est prfrable de choisir une valeur KEY qui ne peut
pas tre devine facilement. Choisissez une valeur KEY contenant au moins
16 caractres, des majuscules, des minuscules, des chiffres, des lettres et des
caractres spciaux.

Attention
Protgez votre cl. Veillez en conserver une copie dans un emplace-
ment sr. Une cl perdue se traduit par une base de donnes totalement
inaccessible et impossible rcuprer.
Cette cl vous sera demande chaque fois que vous souhaiterez dmarrer la
base de donnes.
Les cls de cryptage de base de donnes suivantes sont incorrectes :
les cls qui commencent par un espace, une apostrophe ou des
guillemets ;

les cls qui se terminent par un espace ;


les cls qui contiennent des points-virgules.

La clause ALGORITHM permet de choisir lalgorithme AES (dfini par


dfaut) ou lalgorithme AES_FIPS approuv par FIPS. Sous Windows CE,
seul lalgorithme AES est pris en charge.
Pour plus dinformations sur le cryptage fort dune base de donnes,
reportez-vous la section Cryptage fort [SQL Anywhere Studio Scurit,
page 17].

Clause BLANK PADDING Si vous spcifiez BLANK PADDING ON, les


blancs en fin de chane sont ignors dans les comparaisons. Par exemple, les
deux chanes
Smith
Smith

sont considres comme identiques dans une base de donnes cre avec
cette option.
Loption -b est propose pour la compatibilit avec la norme SQL
ISO/ANSI, qui ne tient pas compte des blancs dans les comparaisons. Par
dfaut, les blancs sont significatifs pour les comparaisons (BLANK
PADDING OFF).

353
Clause ASE COMPATIBLE Ne crez pas les vues SYS.SYSCOLUMNS et
SYS.SYSINDEXES. Par dfaut, ces vues sont cres pour assurer les
compatibilit avec les tables systme disponibles dans le logiciel Watcom
SQL (version 4 et ultrieures). Ces vues entrent en conflit avec les vues de
compatibilit Sybase Adaptive Server Enterprise dbo.syscolumns et
dbo.sysindexes.
Clause JCONNECT Installez la prise en charge jConnect si vous utilisez le
pilote JDBC Sybase jConnect pour accder aux informations du catalogue
systme. Utilisez loption JCONNECT OFF pour exclure les objets systme
jConnect. Vous pouvez utiliser JDBC tant que vous ne lisez pas les
informations systme.
Clause JAVA La valeur par dfaut est JAVA OFF.
Pour utiliser Java dans la base de donnes, installez des entres dans les
tables systme pour les classes dexcution Java de Sybase. Spcifiez JAVA
JDK 1.1.8 ou JAVA JDK 1.3 pour installer explicitement la prise en
charge de la version nomm du JDK. Les classes JDK 1.1.8 se trouvent dans
le fichier java\1.1\classes.zip, sous le rpertoire SQL Anywhere. Les classes
JDK 1.3 se trouvent dans le fichier java\1.3\rt.jar. Les classes par dfaut sont
les classes JDK 1.3.

Option sous licence spare requise


Java dans la base de donnes est un composant faisant lobjet dune licence
spare.
Pour commander ce composant, reportez-vous la section Compo-
sants sous licence spare [Prsentation de SQL Anywhere Studio, page 5].
Clause PASSWORD CASE Vous pouvez spcifier si la distinction
majuscules/minuscules sapplique aux mots de passe dans la base de
donnes. La distinction majuscules/minuscules dfinie pour les mots de
passe nest pas forcment identique celle dfinie pour les comparaisons de
chanes dans la base de donnes. Si vous ne dfinissez pas la distinction
majuscules/minuscules pour les mots de passe, celle dfinie pour la base de
donnes est alors applique. La distinction majuscules/minuscules
sapplique aux caractres tendus utiliss dans les mots de passe, quel que
soit le paramtre choisi pour ces derniers.
Clause CHECKSUM Les checksum permettent de dterminer si une page
de base de donnes a t modifie sur le disque. Lorsque vous crez un base
de donnes avec les checksum activs, un checksum est calcul pour chaque
page juste avant quelle ne soit crite sur le disque. A la prochaine lecture de
la page sur le disque, son checksum sera alors recalcul et compar celui
tant stock sur la page. Si les checksum sont diffrents, cela signifie que la

354
Chapitre 4. Instructions SQL

page a t modifie sur le disque et une erreur se produit. Lorsquils sont


activs, les checksum permettent galement de valider les bases de donnes
cres. Vous pouvez vrifier si une base de donnes a t cre avec les
checksum activs en excutant linstruction suivante :
SELECT db_property ( Checksum )

Pour plus dinformations, reportez-vous la section Validation dune


base de donnes laide de lutilitaire dbvalid [ASA - Guide dadministration,
page 659], Procdure systme sa_validate la page 882 ou Instruction
VALIDATE CHECKSUM la page 693.
Utilisation Cre un fichier de base de donnes avec le nom et les attributs spcifis.
Autorisations Les autorisations requises pour excuter cette instruction sont dfinies via la
ligne de commande du serveur, avec loption -gu. Par dfaut, les droits DBA
sont requis.
Le compte sous lequel le serveur est en cours dexcution doit dtenir une
autorisation dcriture sur les rpertoires o sont crs les fichiers.
Non prise en charge par Windows CE.
Effets secondaires Un fichier systme dexploitation est cr.
Voir aussi Instruction ALTER DATABASE la page 275
Instruction DROP DATABASE la page 476
Utilitaire de cration dune base de donnes [ASA - Guide
dadministration, page 577]
Paramtre de connexion DatabaseKey [DBKEY] [ASA - Guide
dadministration, page 210]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.
Sybase Adaptive Server Enterprise est dot dune instruction CREATE
DATABASE, mais avec des options diffrentes.
Exemple Linstruction suivante cre le fichier de base de donnes mydb.db dans le
rpertoire C:\ :
CREATE DATABASE C:\\mydb
TRANSACTION LOG ON
CASE IGNORE
PAGE SIZE 1024
COLLATION 437
ENCRYPTED OFF
BLANK PADDING OFF
JAVA JDK 1.3
JCONNECT OFF

355
Linstruction ci-aprs cre une base de donnes sans classe dexcution Java
de Sybase. Toutes les oprations de base de donnes sexcutent
normalement, hormis celles impliquant des classes Java ou des objets.
CREATE DATABASE C:\\nojava
JAVA OFF

356
Chapitre 4. Instructions SQL

Instruction CREATE DBSPACE


Description Dfinir un nouvel espace de base de donnes en crant le fichier de base de
donnes associ.
Syntaxe CREATE DBSPACE nom_dbspace AS nom_fichier

Paramtres nom_dbspace Nom interne pour le fichier de base de donnes. Le


paramtre nom_fichier est le nom rel du fichier de base de donnes, avec un
chemin si ncessaire.
nom_fichier Un fichier nom_fichier sans rpertoire explicite est cr dans
le mme rpertoire que le fichier de base de donnes principal. Tout
rpertoire relatif se dfinit par rapport au fichier de base de donnes
principal. Le nom_fichier relatif au serveur de base de donnes. Lorsque
vous utilisez le serveur de base de donnes pour NetWare, nom_fichier doit
utiliser un nom de volume (et non une lettre correspondant une unit) si un
rpertoire absolu est spcifi.
Utilisation Linstruction CREATE DBSPACE cre un fichier de base de donnes. Une
fois cre, une base de donnes ne comporte quun fichier. Toutes les tables
et tous les index crs sont placs dans ce fichier. Linstruction CREATE
DBSPACE ajoute un nouveau fichier la base de donnes. Ce fichier peut se
trouver sur une unit de disque diffrente du fichier principal, et le volume
de la base de donnes peut dpasser la taille dun device physique.
Pour chaque base de donnes, la limite est de douze dbspaces en plus du
fichier principal.
Chaque table est contenue entirement dans un seul fichier de base de
donnes. La clause IN de linstruction CREATE TABLE spcifie le dbspace
dans lequel est place une table. Par dfaut, les tables sont places dans le
fichier principal de base de donnes.
Autorisations Vous devez dtenir les droits DBA
Effets secondaires Commit automatique. Point de reprise automatique.
Voir aussi Instruction DROP la page 474
Utilisation des dbpaces supplmentaires [ASA - Guide dadministration,
page 318]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Cration du dbspace library destin contenir la table LibraryBooks et ses
index.

357
CREATE DBSPACE library
AS e:\\dbfiles\\library.db;
CREATE TABLE LibraryBooks (
title char(100),
author char(50),
isbn char(30),
) IN library;

358
Chapitre 4. Instructions SQL

Instruction CREATE DECRYPTED FILE


Description Dcrypter des bases de donnes cryptes fortement.
Syntaxe CREATE DECRYPTED FILE nouveau_fichier
FROM ancien_fichier KEY
cl
Paramtres FROM Affiche le nom du fichier crypt.
KEY Affiche la cl requise pour accder au fichier crypt.
Utilisation Cette instruction vous permet de dcrypter un fichier de base de donnes
crypt, un journal de transactions ou un dbspace, et de crer un fichier non
crypt. Le fichier dorigine doit tre crypt fortement laide dune cl de
cryptage. Le fichier qui en rsulte est une copie exacte du fichier crypt, la
diffrence prs quil nest pas crypt et que, par consquent, aucune cl nest
requise.
Si une base de donnes est dcrypte laide de cette instruction, le journal
de transactions ainsi que les dbspaces correspondants doivent galement tre
dcrypts afin de pouvoir utiliser la base de donnes.
Si une base de donnes ncessitant une restauration est dcrypte, le journal
de transactions correspondant doit galement tre dcrypt ; la restauration
sera toujours ncessaire sur la nouvelle base de donnes.
Le nom du journal de transactions ne change pas dans ce processus. Par
consquent, si vous renommez la base de donnes et le journal de
transactions, vous devez excuter dblog -t sur la base de donnes rsultante.
Pour crypter une base de donnes existante, vous devez soit utiliser
linstruction CREATE ENCRYPTED FILE, soit la dcharger, puis la
recharger laide de loption -an, en spcifiant loption -ek ou -ep. Vous
pouvez galement utiliser cette mthode pour modifier une cl de cryptage
existante.
Autorisations Utilisateur avec droits DBA.
Effets secondaires Aucun.
Exemple Lexemple suivant dcrypte la base de donnes contacts et cre la base de
donnes contacts2, qui nest pas crypte :
CREATE DECRYPTED FILE contacts2.db
FROM contacts.db
KEY Sd8f6654*Mnn

359
Instruction CREATE DOMAIN
Description Crer un domaine dans une base de donnes.
Syntaxe CREATE { DOMAIN | DATATYPE } [ AS ] nom_domaine type_donnes
[ [ NOT ] NULL ]
[ DEFAULT valeur_par_dfaut ]
[ CHECK ( condition ) ]

nom_domaine : identificateur

type_donnes : type de donnes intgr, avec prcision et chelle

Paramtres DOMAIN | DATATYPE Il est conseill dutiliser CREATE DOMAIN plutt


que CREATE DATATYPE dans la mesure o CREATE DOMAIN est le
terme utilis dans la norme SQL3 ANSI/ISO.
NULL Par dfaut, les domaines autorisent des valeurs NULL, sauf si
loption allow_nulls_by_default est rgle sur OFF. Dans ce cas, les
nouveaux domaines nautorisent pas les valeurs NULL par dfaut. La valeur
nulle dune colonne cre dans un domaine dpend du paramtrage de la
dfinition du domaine et non de celui de loption allow_nulls_by_default
lorsque la colonne est rfrence. Tout paramtre explicite des valeurs
NULL ou NOT NULL dans la dfinition de la colonne se substitue au
paramtre du domaine.
Clause CHECK Lorsque vous crez une condition CHECK, vous pouvez
utiliser un nom de variable prcd du signe @. Lorsque le type de donnes
est utilis dans la dfinition dune colonne, une telle variable est remplace
par le nom de la colonne. Cela permet la dfinition des conditions CHECK
sur les types de donnes et leur utilisation par tous les noms de colonne.
Utilisation Les domaines sont des alias pour les types de donnes intgrs, y compris
pour les valeurs de prcision et dchelle lorsquelles sont applicables. Ils
offrent plus de commodit et favorisent la cohrence de la base de donnes.
Les domaines sont des objets au sein de la base de donnes. Leurs noms
respectifs doivent tre conformes aux rgles des identificateurs. Les noms
des domaines font toujours la distinction entre les majuscules et les
minuscules, tout comme les noms des type de donnes intgrs.
Lutilisateur qui cre un type de donnes en devient automatiquement
propritaire. Vous ne pouvez spcifier aucun propritaire dans linstruction
CREATE DATATYPE. Le nom du type de domaine doit tre unique ; tous
les utilisateurs peuvent accder au type de donnes sans prciser leur
propritaire.
Les domaines peuvent avoir des conditions CHECK et des valeurs

360
Chapitre 4. Instructions SQL

DEFAULT, et vous pouvez indiquer si le type de donnes autorise des


valeurs NULL ou non. Chaque colonne dfinie sur le type de donnes hrite
de ces conditions et de ces valeurs. Toutes les conditions ou valeurs
spcifies de faon explicite sur la colonne remplacent celles qui sont
spcifies pour le type de donnes.
Pour supprimer le type de donnes de la base, utilisez linstruction DROP.
Vous devez tre propritaire du type de donnes ou dtenir les droits DBA
pour supprimer un domaine.
Autorisations Droits RESOURCE requis.
Effets secondaires Commit automatique.
Voir aussi Instruction DROP la page 474
Types de donnes SQL la page 55
Normes et compatibilit SQL/92 Fonctionnalit de niveau intermdiaire.
SQL/99 Fonction principale/SQL extrieure au langage SQL basique.
Sybase Non prise en charge par Adaptive Server Enterprise.
Transact-SQL fournit une fonctionnalit similaire laide de la procdure
systme sp_addtype et via les instructions CREATE DEFAULT et
CREATE RULE.

Exemple Linstruction suivante cre un type de donnes nomm address contenant


une chane de 35 caractres et dont la valeur peut tre NULL :
CREATE DOMAIN address CHAR( 35 ) NULL

Linstruction suivante cre un type de donnes nomm id nautorisant pas les


valeurs NULL et auto-incrment par dfaut :
CREATE DOMAIN id INT
NOT NULL
DEFAULT AUTOINCREMENT

361
Instruction CREATE ENCRYPTED FILE
Description Cette instruction permet de crypter des bases de donnes fortement cryptes,
des journaux de transactions ou des dbspaces.
Syntaxe CREATE ENCRYPTED FILE nouveau_fichier
FROM ancien_fichier
KEY cl
[ ALGORITHM { AES | AES_FIPS } ]

Paramtres FROM Affiche le nom du fichier non crypt.


KEY Affiche la cl affecte au fichier crypt.
ALGORITHM Spcifie lalgorithme utilis pour crypter le fichier. Si vous
nen spcifiez aucun, AES est employ par dfaut.
Utilisation Cette instruction cre un fichier crypt partir dune base de donnes non
crypte, dun journal de transactions ou dun dbspace. Le fichier dorigine
ne doit pas tre crypt. Le fichier qui en rsulte est une copie exacte du
fichier dorigine, except quil est crypt laide de la cl et de lalgorithme
spcifis.
Si une base de donnes est crypte laide de cette instruction, le journal de
transactions ainsi que les dbspaces correspondants doivent galement tre
crypts avec la mme cl et le mme algorithme afin de pouvoir utiliser la
base de donnes. Vous ne pouvez combiner ni des fichiers crypts et des
fichiers non crypts, ni des fichiers crypts avec des cls ou des algorithmes
diffrents.
Si une base de donnes ncessitant une restauration est crypte, le journal de
transactions correspondant doit galement tre crypt ; la restauration sera
toujours ncessaire sur la nouvelle base de donnes.
Le nom du journal de transactions ne change pas dans ce processus. Par
consquent, si vous renommez la base de donnes et le journal de
transactions, vous devez excuter dblog -t sur la base de donnes rsultante.
Vous pouvez crypter une base de donnes existante ou modifier une cl de
cryptage existante en dchargeant puis en rechargeant la base de donnes
laide de loption -an, en spcifiant loption -ek ou -ep. Vous pouvez
galement utiliser linstruction CREATE ENCRYPTED FILE conjointement
avec linstruction CREATE DECRYPTED FILE pour modifier une cl de
cryptage.
Autorisations Utilisateur avec droits DBA.
Sous Windows CE, seul lalgorithme AES est pris en charge.
Effets secondaires Aucun.

362
Chapitre 4. Instructions SQL

Exemple Lexemple suivant illustre le cryptage de la base de donnes contacts et la


cration dune base de donnes contacts2 crypte au moyen dAES_FIPS :
CREATE ENCRYPTED FILE contacts2.db
FROM contacts.db
KEY Sd8f6654*Mnn
ALGORITHM AES_FIPS

Lexemple ci-aprs crypte la base de donnes contacts et le journal contacts,


en renommant les deux fichiers. Il sera ncessaire dexcuter dblog -ek
abcd -t contacts2.log contacts.db, tant donn que le journal a
t renomm, et que le fichier de base de donnes recherche toujours
lancien journal.
CREATE ENCRYPTED FILE contacts2.db
FROM contacts.db
KEY Sd8f6654*Mnn
CREATE ENCRYPTED FILE contacts2.log
FROM contacts.db
KEY Te9g7765*Noo

Exemple 3 Lexemple ci-aprs crypte la base de donnes contacts et le journal contacts


sans modifier le nom du journal dorigine. Dans ce cas, il nest pas
ncessaire dexcuter dblog, tant donn que le nom du fichier reste le
mme.
CREATE ENCRYPTED FILE newpath\contacts.db
FROM contacts.db
KEY Sd8f6654*Mnn
CREATE ENCRYPTED FILE newpath\contacts.log
FROM contacts.log
KEY Sd8f6654*Mnn

Exemple 4 Lexemple ci-aprs modifie la cl de cryptage de la base de donnes contacts.


CREATE DECRYPTED FILE temp.db
FROM contacts.db
KEY oldkey
del contacts.db
CREATE ENCRYPTED FILE contacts.db
FROM temp.db
KEY newkey
del temp.db

363
Instruction CREATE EVENT
Description Dfinir un vnement ou sa routine de gestion associe pour
lautomatisation des actions prdfinies. Dfinir les actions planifies.
Syntaxe CREATE EVENT nom_vnement
[ TYPE type_vnement
[ WHERE condition_trigger [ AND condition_trigger ] . . . ]
| SCHEDULE spcif_planificat., . . . ]
[ ENABLE | DISABLE ]
[ AT { CONSOLIDATED | REMOTE | ALL } ]
[ HANDLER
BEGIN
...
END ]

type_vnement :
BackupEnd | "Connect"
| ConnectFailed | DatabaseStart
| DBDiskSpace | "Disconnect"
| GlobalAutoincrement | GrowDB
| GrowLog | GrowTemp
| LogDiskSpace | "RAISERROR"
| ServerIdle | TempDiskSpace

condition_trigger :
event_condition( nom_condition ) { = | < | > | != | <= | >= } valeur

spcif_planificat. :
[ nom_planificat. ]
{ START TIME heure_dbut | BETWEEN heure_dbut AND heure_fin }
[ EVERY priode { HOURS | MINUTES | SECONDS } ]
[ ON { ( jour_de_semaine, . . . ) | ( jour_du_mois, . . . ) } ]
[ START DATE date_dpart ]

nom_vnement | nom_planification : identificateur

jour_de_semaine : chane

jour_du_mois | valeur | priode : entier

heure_dbut | heure_fin : heure

date_dpart : date

Paramtres Clause CREATE EVENT Le nom dvnement est un identificateur. Un


vnement est dot dun crateur (utilisateur layant cr) et la routine de
gestion dvnement sexcute avec les autorisations accordes ce crateur.
Le mme schma sapplique que pour lexcution dune procdure stocke.

364
Chapitre 4. Instructions SQL

Vous ne pouvez pas crer des vnements dtenus par dautres utilisateurs.
Clause TYPE Vous pouvez spcifier la clause TYPE avec une clause
WHERE facultative ; vous pouvez galement spcifier la clause
SCHEDULE.
Le type_vnement est lun des ensembles de types dvnement dfinis par
le systme. Les types dvnement ne font pas la distinction entre
majuscules et minuscules. Spcifiez les conditions qui dclenchent ce
type_vnement laide de la clause WHERE. Pour obtenir une description
des types dvnement non rpertoris ci-aprs, reportez-vous la section
Choix dun vnement systme [ASA - Guide dadministration, page 337].
Types dvnement DiskSpace Si la base de donnes contient une
routine de gestion dvnement pour lun des types de DiskSpace, le
serveur de base de donnes vrifie toutes les 30 secondes lespace
disponible sur chaque device associ au fichier pertinent.
Lorsque la base de donnes comporte plusieurs dbspaces, sur des units
spares, DBDiskSpace vrifie chaque unit et ragit en fonction de
lespace disponible le plus faible.
Le type dvnement LogDiskSpace vrifie lemplacement du journal de
transactions et de tout journal de transactions en miroir, puis gnre un
rapport en fonction de lespace disque le plus faible.
Les types dvnement DiskSpace ne sont pas supports sous Windows
CE ni sur les toutes premires versions de Windows 95.
Le type dvnement TempDiskSpace vrifie la quantit despace disque
temporaire.
Si les gestionnaires dvnement appropris ont t dfinis
(DBDiskSpace, LogDiskSpace ou TempDiskSpace), le serveur vrifie
toutes les 30 secondes lespace disponible sur chaque device associ un
fichier de base de donnes. De mme, si un vnement a t dfini pour
grer le type dvnement systme ServerIdle, le serveur avertit le
gestionnaire lorsquaucune requte na t traite au cours des 30
dernires secondes.
Lors du dmarrage du serveur de base de donnes, vous pouvez spcifier
loption -fc afin de garantir la mise en oeuvre dune fonction callback si
le serveur est confront une condition de systme de fichiers satur.
Pour plus dinformations, reportez-vous la section Option de
serveur -fc [ASA - Guide dadministration, page 156].
Type dvnement GlobalAutoIncrement Lvnement se dclenche
chaque insertion lorsque le nombre de valeurs restantes pour un
GLOBAL AUTOINCREMENT (auto-incrmentation globale) est

365
infrieur 1 % de la limite de lintervalle. Une action typique du
gestionnaire serait de demander une nouvelle valeur pour loption
GLOBAL_DATABASE_ID, sur la base de la table et du nombre de
valeurs restantes fournies comme paramtres de cet vnement.
Vous pouvez utiliser la fonction event_condition en spcifiant
RemainingValues comme argument pour ce type dvnement.
Type dvnement ServerIdle Si la base de donnes contient une
routine de gestion dvnement pour le type ServerIdle, le serveur vrifie
lactivit serveur toutes les 30 secondes.
Clause WHERE La condition de trigger dtermine la condition sous
laquelle un vnement est dclench. Par exemple, pour dclencher une
action lorsque le disque hbergeant le journal de transactions est plein plus
de 80%, faites appel la condition suivante :
...
WHERE event_condition( LogDiskSpacePercentFree ) < 20
...

Largument de la fonction event_condition doit tre autoris pour le type


dvnement.
Vous pouvez utiliser plusieurs conditions AND pour constituer la clause
WHERE, mais vous ne pouvez pas utiliser des conditions OR ou autres.
Pour plus dinformations sur les arguments autoriss, reportez-vous la
section EVENT_CONDITION (fonction systme) la page 153.
Clause SCHEDULE Cette clause spcifie quel moment les actions
planifies doivent se raliser. La squence dheures fonctionne comme un
ensemble de conditions de dclenchement pour les actions associes dfinies
dans la routine de gestion dvnement.
Vous pouvez crer plusieurs planifications pour un vnement donn et sa
routine de gestion associe. Des planifications complexes peuvent ainsi tre
mises en oeuvre. Alors quil est obligatoire de fournir un nom de
planification lorsquil en existe plusieurs, cette spcification est optionnelle
lorsquil ny en a quune.
Un vnement planifi est rcurrent si sa dfinition inclut EVERY ou ON ; si
aucun de ces mots rservs nest utilis, lvnement sera excut au moins
une fois. Une tentative de cration dvnement planifi non rcurrent pour
lequel lheure de dmarrage est dpasse gnrera une erreur. Lorsquun
vnement planifi non rcurrent est accompli, sa planification est
supprime, mais pas la routine de gestion dvnement.
Les heures des vnements planifis sont calcules lors de la cration des
planifications, puis nouveau lors de lexcution de la routine de gestion.

366
Chapitre 4. Instructions SQL

Lheure suivante de lvnement est calcule daprs linspection de la ou


des planifications associes et daprs la dtection de lheure suivante de
planification dans le futur. Si une routine de gestion dvnement doit
sexcuter toutes les heures entre 9 heures du matin et 17 heures, et que son
excution dure 65 minutes, elle sexcute 9 heures, 11 heures, 13 heures et
17 heures. Si vous souhaitez un chevauchement des excutions, vous devez
crer un autre vnement.
Les sous-clauses dune dfinition de planification se rpartissent comme suit
:
START TIME Premire heure de planification pour chaque jour o
lvnement est planifi. Si une START DATE est dfinie, START TIME
y fait rfrence. En labsence de spcification dune valeur START
DATE, la valeur START TIME est le jour courant ( moins que lheure ne
soit dpasse) et chaque jour suivant (si la planification inclut EVERY ou
ON).
BETWEEN ... AND Intervalle dheures dans la journe au-del duquel
aucune heure planifie nexiste. Si une START DATE est spcifie, les
heures planifies nexistent pas avant cette date.
EVERY Intervalle entre des vnements planifis successifs. Les
vnements planifis ne se produisent quaprs la valeur START TIME
pour la journe, ou pendant lintervalle spcifi par BETWEEN ... AND.
ON Liste des jours auxquels se produisent les vnements planifis. La
valeur par dfaut est chaque jour si EVERY est spcifi. La spcification
peut tre dfinie en terme de jours de la semaine ou jours du mois.
En anglais, les jours de la semaine sont indiqus sous la forme Mon,
Tues, etc. Dans toutes les langues, vous pouvez utiliser la forme complte
du jour, comme Lundi. Vous devez utiliser la forme complte du jour, si
la langue que vous utilisez nest pas langlais, nest pas la langue
demande par le client dans la chane de connexion et nest pas la langue
de la fentre du serveur.
Les jours du mois se prsentent comme des nombres entiers compris
entre 0 et 31. La valeur 0 reprsente le dernier jour dun mois.

START DATE Date laquelle des vnements planifis doivent


commencer se produire. La valeur par dfaut est la date courante.
Chaque fois quune routine de gestion dun vnement planifi se termine, la
prochaine heure et date planifie est calcule.
1. Si la clause EVERY est spcifie, essayez de savoir si lheure de la
prochaine planification tombe le jour courant, et avant la fin de

367
lintervalle BETWEEN ... AND. Si tel est le cas, il sagit de lheure de la
planification suivante.
2. Si lheure de la planification suivante nest pas le jour courant, trouvez la
date suivante laquelle doit sexcuter lvnement.
3. Trouvez lheure de dbut (START TIME) pour cette date, ou le dbut de
lintervalle BETWEEN ... AND.
ENABLE | DISABLE Par dfaut, les routines de gestion dvnement sont
actives. Lorsque DISABLE est spcifi, la routine de gestion dvnement
ne sexcute pas mme en prsence de lheure planifie ou de la condition de
dclenchement. Une instruction TRIGGER EVENT ne permet pas
lexcution de routines de gestion qui ont t dsactives.
Clause AT Si vous souhaitez excuter des vnements sur des bases de
donnes distantes ou consolides dans une configuration SQL Remote, vous
pouvez utiliser cette clause pour limiter les bases de donnes celles sur
lesquelles sont grs les vnements. Par dfaut, toutes les bases de donnes
excutent lvnement.
Clause HANDLER Chaque vnement comporte une routine de gestion.
Utilisation Les vnements sutilisent de deux faons :
Planification des actions Le serveur de base de donnes excute une
srie dactions des dates planifies. Utilisez cette fonctionnalit pour
planifier des sauvegardes, des contrles de validation, des demandes de
remplissage de tables de rapport, etc.
Actions de gestion des vnements Le serveur de base de donnes
excute une srie dactions lorsquun vnement prdfini se produit. Les
vnements pouvant tre grs comprennent des restrictions despace
disque (lorsque le remplissage dun disque dpasse un pourcentage
donn), linactivit du serveur, etc.
Une dfinition dvnement comprend deux lments distincts. La condition
de trigger peut tre une occurrence, par exemple le remplissage du disque
au-del dun seuil dfini. Une planification est un ensemble dheures,
agissant chacune comme une condition de trigger. Lorsquune condition de
trigger est satisfaite, la routine de gestion dvnement sexcute. La routine
de gestion dvnement comprend une ou plusieurs actions spcifies au
sein dune instruction compose (BEGIN... END).
En labsence de spcification dune condition de trigger ou dune
spcification de planification, seule une instruction TRIGGER EVENT
explicite peut dclencher lvnement. Pendant la phase de dveloppement,
vous pouvez choisir de dvelopper et tester des routines de gestion

368
Chapitre 4. Instructions SQL

dvnements laide TRIGGER EVENT, puis dajouter la clause schedule


ou WHERE une fois les tests effectus.
Toute erreur lie aux vnements est signale sur la console du serveur de
base de donnes.
Lorsquune routine de gestion dvnement est dclenche, le serveur met
la disposition de la routine les informations de contexte (ID de connexion
ayant entran le dclenchement de lvnement) laide de la fonction
event_parameter. Pour plus dinformations sur la fonction event_parameter,
reportez-vous la section EVENT_PARAMETER (fonction systme) la
page 155.
Autorisations Vous devez dtenir les droits DBA.
Les routines de gestion dvnement sexcutent sur une connexion spare,
avec les autorisations du propritaire dvnement. Pour une excution avec
dautres autorisations que celles de DBA, vous pouvez appeler une
procdure depuis la routine de gestion dvnement : lexcution des
procdures est soumise aux autorisations octroyes leur propritaire. La
connexion spare ne compte pas au niveau de la limite de dix connexions
du serveur de base de donnes personnel.
Effets secondaires Commit automatique.
Les actions de la routine de gestion dvnement sont valides si aucune
erreur nest dtecte pendant lexcution, et annules si des erreurs sont
dtectes.
Voir aussi Instruction BEGIN la page 324
Instruction ALTER EVENT la page 283
Instruction COMMENT la page 339
Instruction DROP la page 474
Instruction TRIGGER EVENT la page 673
EVENT_PARAMETER (fonction systme) la page 155
Choix dun vnement systme [ASA - Guide dadministration, page 337]
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Linstruction demande au serveur de base de donnes deffectuer une
sauvegarde automatique sur bande, sur la premire unit de bande dune
machine Windows NT, tous les jours 13 heures.

369
CREATE EVENT DailyBackup
SCHEDULE daily_backup
START TIME 1:00AM EVERY 24 HOURS
HANDLER
BEGIN
BACKUP DATABASE TO \\\\.\\tape0
ATTENDED OFF
END

Linstruction demande au serveur de base de donnes deffectuer une


sauvegarde automatique du journal de transactions uniquement, toutes les
heures, du lundi au vendredi entre 8 heures et 18 heures.
CREATE EVENT HourlyLogBackup
SCHEDULE hourly_log_backup
BETWEEN 8:00AM AND 6:00PM
EVERY 1 HOURS ON
(Monday,Tuesday,Wednesday,Thursday,Friday)
HANDLER
BEGIN
BACKUP DATABASE DIRECTORY c:\\database\\backup
TRANSACTION LOG ONLY
TRANSACTION LOG RENAME
END

Pour consulter dautres exemples, reportez-vous la section Dfinition


des conditions de trigger pour les vnements [ASA - Guide dadministration,
page 338].

370
Chapitre 4. Instructions SQL

Instruction CREATE EXISTING TABLE


Description Crer une table Proxy reprsentant un objet existant sur un serveur distant.
Syntaxe CREATE EXISTING TABLE [ propritaire.]nom_table
[ (dfinition_colonne, . . .) ]
AT chane_emplacement

dfinition_colonne :
nom_colonne type_donnes[NOT NULL]

chane_emplacement :
nom_serveur_distant.[nom_db].[propritaire].nom_objet
| nom_serveur_distant;[ nom_db];[ propritaire];nom_objet

Paramtres Clause AT La clause AT spcifie lemplacement de lobjet distant. La


clause AT accepte le point-virgule ( ;) comme dlimiteur. Si un point-virgule
est insr dans la chane chane_emplacement, il constitue le dlimiteur de
champ. Sinon, un point sert de dlimiteur de champ. Cela permet dutiliser
des noms de fichier et des extensions dans les champs base de donnes et
propritaire. Par exemple, linstruction suivante met en correspondance la
table a1 avec le fichier MS Access mydbfile.mdb :
CREATE EXISTING TABLE a1
AT access;d:\mydbfile.mdb;;a1

Utilisation Linstruction CREATE EXISTING TABLE cre une nouvelle table Proxy
locale qui correspond une table situe sur un emplacement externe.
Linstruction CREATE EXISTING TABLE est une variante de CREATE
TABLE. Le mot-cl EXISTING est utilis avec CREATE TABLE pour
indiquer quil existe dj une table distante et que ses mtadonnes doivent
tre importes dans Adaptive Server Anywhere. Cela permet de faire de la
table distante une entit visible par les utilisateurs dAdaptive Server
Anywhere. Adaptive Server Anywhere vrifie que la table existe
lemplacement externe avant de crer la table.
Si lobjet nexiste pas (soit le fichier de donnes hte, soit lobjet de serveur
distant), linstruction est refuse et un message derreur est gnr.
Les informations dindex du fichier de donnes hte ou de la table du serveur
distant sont extraites et servent crer des lignes pour la table systme table
sysindexes. Des index et des cls sont ainsi dfinis en termes serveur et
loptimiseur de requtes peut examiner tous les index existant sur la table.
Des contraintes rfrentielles sont transmises lemplacement distant au
moment ncessaire.
Si aucune dfinition de colonne nest spcifie, Adaptive Server Anywhere
gnre la liste des colonnes partir des mtadonnes obtenues dans la table

371
distante. Si des dfinitions de colonne sont spcifies, Adaptive Server
Anywhere les vrifie. Pour les noms de colonne, les types de donnes, les
longueurs, la proprit identity et les proprits aux valeurs NULL, les
vrifications portent sur les points suivants :
Les noms de colonne doivent correspondre exactement ( lexception de
la casse qui est ignore).
Les types de donnes dans linstruction CREATE EXISTING TABLE
doivent correspondre ou tre convertibles dans les types de donnes de la
colonne de lemplacement distant. Par exemple, un type de donnes de
colonne locale sera dfini pour des valeurs montaires, et le type de
donnes de la colonne distante sera numrique.

La proprit NULL de chaque colonne est vrifie. Si, pour la colonne


locale, elle nest pas identique celle de la colonne distante, un message
davertissement est mis, sans toutefois que linstruction soit abandonne.
La longueur de chaque colonne est vrifie. Si la longueur des colonnes
char, varchar, binary, varbinary, dcimale et numrique ne correspond
pas, un message davertissement est mis sans toutefois que la commande
soit abandonne.
Vous pouvez choisir dexclure un sous-ensemble de la liste des colonnes
distantes dans votre instruction CREATE EXISTING.
Autorisations Droits RESOURCE requis. Pour crer une table pour un autre utilisateur,
vous devez dtenir les droits DBA (administrateur de la base de donnes).
Non prise en charge par Windows CE.
Effets secondaires Commit automatique.
Voir aussi Instruction CREATE TABLE
Spcification de lemplacement dune table Proxy [ASA - Guide de
lutilisateur SQL, page 660]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.

Sybase Prise en charge par Open Client/Open Server.


Exemple Cration dune table Proxy nomme blurbs pour la table blurbs sur le
serveur distant server_a.
CREATE EXISTING TABLE blurbs
( author_id id not null,
copy text not null)
AT server_a.db1.joe.blurbs

372
Chapitre 4. Instructions SQL

Cration dune table Proxy nomme blurbs pour la table blurbs sur le
serveur distant server_a. Adaptive Server Anywhere gnre la liste de
colonnes partir des mtadonnes quil obtient de la table distante.
CREATE EXISTING TABLE blurbs
AT server_a.db1.joe.blurbs

Cration dune table Proxy nomme rda_employee pour la table employee


sur le serveur distant Adaptive Server Anywhere asademo.
CREATE EXISTING TABLE rda_employee
AT asademo..DBA.employee

373
Instruction CREATE EXTERNLOGIN
Description Affecter un nom de login et un mot de passe de remplacement, utilisables
pour communiquer avec un serveur distant.
Syntaxe CREATE EXTERNLOGIN nom_login
TO serveur_distant
REMOTE LOGIN utilisateur_distant
[ IDENTIFIED BY mot_de_passe_distant ]

Paramtres nom_login Spcifie le nom de login de lutilisateur local. Lors de


lutilisation des logins intgrs, le nom_login correspond celui de
lutilisateur de base de donnes sur lequel est mapp le groupe ou
lutilisateur Windows.
Clause TO Spcifie le nom du serveur distant.
Clause REMOTE LOGIN Spcifie le compte utilisateur correspondant sur
le serveur distant pour le nom_login de lutilisateur local.
Clause IDENTIFIED BY Indique le mot de passe distant
(mot_de_passe_distant ) pour lutilisateur distant (utilisateur_distant ). La
combinaison utilisateur_distant et mot_de_passe_distant doit tre valide sur
le serveur distant.
Utilisation Par dfaut, Adaptive Server Anywhere utilise les noms et les mots de passe
de ses clients chaque fois quil se connecte un serveur distant pour le
compte de ces clients. CREATE EXTERNLOGIN attribue un nom de login
et un mot de passe de remplacement utilisables pour communiquer avec un
serveur distant.
Le mot de passe est stock en interne sous forme crypte. Le serveur_distant
doit tre connu du serveur local, grce une entre dans la table
SYSERVERS. Pour plus dinformations, reportez-vous la section
Instruction CREATE SERVER la page 409.
Les sites pour lesquels le mot de passe expire automatiquement doivent
prvoir des mises jour priodiques des mots de passe pour les logins
externes.
CREATE EXTERNLOGIN nest pas utilisable depuis une transaction.
Autorisations Seul un utilisateur possdant un compte DBA (administrateur de base de
donnes) et un nom de login peut ajouter ou modifier un login externe pour
le nom_login.
Non prise en charge par Windows CE.
Effets secondaires Commit automatique.

374
Chapitre 4. Instructions SQL

Voir aussi Instruction DROP EXTERNLOGIN la page 478


Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Prise en charge par Open Client/Open Server.


Exemple Mise en correspondance de lutilisateur local nomm DBA avec lutilisateur
sa dont le mot de passe est Plankton lors de la connexion au serveur
sybase1.
CREATE EXTERNLOGIN DBA
TO sybase1
REMOTE LOGIN sa
IDENTIFIED BY Plankton

375
Instruction CREATE FUNCTION
Description Crer une fonction dans la base de donnes.
Syntaxe 1 CREATE FUNCTION [ propritaire.]nom_fonction ( [ paramtre, . . . ] )
RETURNS type_donnes caractristiques_routine
{ instruction_compound
| AS instruction_compose _tsql
| nom_externe }

Syntaxe 2 CREATE FUNCTION [ propritaire.]nom_procdure ( [ paramtre, . . . ] )


RETURNS type_donnes
URL chane_url
[ TYPE { HTTP[:{GET|POST}] | SOAP[:{RPC|DOC}] } ]
[ NAMESPACE chane_namespace ]
[ CERTIFICATE chane_certificat ]
[ CLIENTPORT chane_clientport ]
[ PROXY chane_proxy ]

chane_url :
{HTTP|HTTPS}://[utilisateur :mot_de_passe@]nom_hte[:port][/chemin]

paramtre :
[ IN ] nom_paramtre type_donnes

caractristiques_routine
ON EXCEPTION RESUME | [ NOT ] DETERMINISTIC

instruction_compose _tsql :
instruction_sql
instruction_sql
...
nom_externe :
EXTERNAL NAME appel_bibliothque
| EXTERNAL NAME appel_java LANGUAGE JAVA

appel_bibliothque :
[systme_exploitation:]nom_fonction@bibliothque; . . .

systme_exploitation :
Windows95 | WindowsNT | NetWare | UNIX
appel_java :
[nom_package.]nom_classe.nom_mthode signature_mthode

signature_mthode :
([descripteur_champ, . . . ]) descripteur_retour

descripteur_champ | descripteur_retour :
Z | B | S | I | J | F | D | C | V | [descripteur | Lnom_classe;

376
Chapitre 4. Instructions SQL

Paramtres Clause CREATE FUNCTION Les noms des paramtres doivent tre
conformes aux rgles des identificateurs de base de donnes. Ils doivent
avoir un type de donnes SQL valable et doivent tre prfixs par le mot-cl
IN, indiquant que largument est une expression qui fournit une valeur la
procdure.
instruction_compound Ensemble dinstructions SQL encadres par
BEGIN et END et spares par des points-virgules. Reportez-vous la
section Instruction BEGIN la page 324.
instruction_compose _tsql Batch dinstructions Transact-SQL.
Reportez-vous aux sections Batchs Transact-SQL [ASA - Guide de
lutilisateur SQL, page 538] et Instruction CREATE PROCEDURE [T-SQL]
la page 400.
Clause EXTERNAL NAME Une fonction utilisant la clause EXTERNAL
NAME constitue une enveloppe autour dun appel une fonction dans une
bibliothque externe. Une fonction utilisant la clause EXTERNAL NAME
ne peut pas comporter dautres clauses suivant la clause RETURNS. Le nom
bibliothque peut comprendre lextension de fichier, en principe .dll sous
Windows, .so sous UNIX et .nlm sous NetWare. En labsence dextension, le
logiciel ajoute lextension de fichier par dfaut propre la plate-forme pour
les bibliothques. Sous NetWare, si aucun nom NLM nest donn, le NLM
contenant le symbole doit dj tre charg lors de lappel de la fonction.
Pour plus dinformations sur les appels de bibliothque externes,
reportez-vous la section Appel de bibliothques externes partir de
procdures [ASA - Guide de lutilisateur SQL, page 760].
Clause EXTERNAL NAME LANGUAGE JAVA Une fonction utilisant la
clause EXTERNAL NAME avec une clause LANGUAGE JAVA constitue
une enveloppe autour dune mthode Java.
Pour plus dinformations sur lappel des procdures Java, reportez-vous
la section Instruction CREATE PROCEDURE la page 390.
Clause ON EXCEPTION RESUME Utilise la gestion derreurs de type
Transact-SQL. Pour plus dinformations, reportez-vous la section
Instruction CREATE PROCEDURE la page 390.
Clause NOT DETERMINISTIC Une fonction qui est spcifie comme NOT
DETERMINISTIC est rvalue chaque fois quelle est appele dans une
requte. Les rsultats des fonctions non spcifies de cette manire peuvent
tre mises en cache pour de meilleures performances et rutilises chaque
fois que la fonction est appele au moyen des mmes paramtres lors de
lvaluation de la requte.
Les fonctions qui prsentent des effets secondaires tels que la modification

377
des donnes sous-jacentes doivent tre dclares comme NOT
DETERMINISTIC. Par exemple, une fonction qui gnre des valeurs de cl
primaire et qui est utilise dans une instruction INSERT ... SELECT doit
tre dclare NOT DETERMINISTIC :
CREATE FUNCTION keygen( increment INTEGER )
RETURNS INTEGER
NOT DETERMINISTIC
BEGIN
DECLARE keyval INTEGER;
UPDATE counter SET x = x + increment;
SELECT counter.x INTO keyval FROM counter;
RETURN keyval
END
INSERT INTO new_table
SELECT keygen(1), ...
FROM old_table

Les fonctions peuvent tre dclares comme DETERMINISTIC si elles


renvoient toujours la mme valeur pour des paramtres dentre donns. Les
versions ultrieures du logiciel pourraient utiliser cette dclaration pour
optimiser des fonctions peu sres qui pourraient renvoyer des valeurs
diffrentes pour la mme entre.
Clause URL Uniquement employe lors de la dfinition dune fonction
cliente des services Web HTTP ou SOAP. Indique lURI du service Web.
Les paramtres facultatifs de mot de passe et dutilisateur permettent de
fournir les informations didentification ncessaires lauthentification
HTTP Basic. Lauthentification HTTP Basic de base 64 code les
informations dutilisateur et de mot de passe, puis les transmet len-tte
dauthentification de la demande HTTP.
Clause TYPE Spcifie le format utilis lors de la demande de service Web.
Lorsque SOAP est spcifi ou quaucune clause Type nest incluse, le type
utilis par dfaut est SOAP:RPC. HTTP implique lutilisation de
HTTP:POST. Comme les demandes SOAP sont toujours envoyes en tant
que documents XML, HTTP:POST est toujours utilis.
Clause NAMESPACE Sapplique uniquement aux fonctions clientes
SOAP. Cette clause identifie le namespace de mthode gnralement requis
pour les demandes SOAP:RPC et SOAP:DOC. Le serveur SOAP traitant la
demande utilise ce namespace pour interprter les noms des entits du corps
du message de la demande SOAP. Le namespace peut tre obtenu partir de
la description WSDL du service SOAP disponible auprs du serveur du
service Web. La valeur par dfaut comprend lURL de la procdure jusquau
nom du composant facultatif (non compris).
Clause CERTIFICATE Afin de procder une demande scurise

378
Chapitre 4. Instructions SQL

(HTTPS), un client doit avoir accs au certificat utilis par le serveur


HTTPS. Les informations ncessaires sont spcifies dans une chane de
paires cl/valeur spares par des points-virgules. Le certificat peut tre
plac soit dans un fichier dont le nom est fourni au moyen de la cl file, soit
dans une chane (il ne peut pas tre plac dans les deux la fois). Les cls
suivantes sont disponibles :

Cl Abr- Description
viation

file Nom de fichier du certificat.

certifi- cert Le certificat lui-mme.


cate

company co La socit mentionne dans le certificat.

unit Lunit dorganisation spcifie dans le certificat.

name Le nom courant spcifi dans le certificat.


Les certificats ne sont requis que pour les demandes diriges vers un serveur
HTTPS ou susceptibles dtre rediriges dun serveur non scuris vers un
serveur scuris. Aucune valeur de certificat nest exige lors dun envoi
vers un serveur de base de donnes Adaptive Server Anywhere acceptant les
demandes HTTPS, moins quun paramtre de certificat nait t utilis au
dmarrage du serveur.
Clause CLIENTPORT Indique le numro de port sur lequel la procdure
cliente HTTP communique via TCP/IP. Elle est uniquement fournie et
recommande pour les connexions passant par des pare-feux puisque ceux-ci
effectuent un filtrage en fonction du port TCP/UDP. Vous pouvez spcifier
un numro de port unique ou des plages de numros de port, ou une
combinaison des deux, par exemple CLIENTPORT 85,90-97.
Pour plus dinformations, reportez-vous la section Option de
protocole ClientPort [CPORT] [ASA - Guide dadministration, page 234].
Clause PROXY Spcifie lURI du serveur proxy. Elle est uniquement
employe lorsque le client doit accder au rseau via un proxy. Elle indique
quune connexion doit tre tablie au serveur proxy et que la demande doit
tre envoye au service Web par son intermdiaire.
Utilisation Linstruction CREATE FUNCTION cre une fonction dfinie par
lutilisateur dans la base de donnes. Pour crer une fonction pour un autre
utilisateur, spcifiez un nom de propritaire. Une fonction dfinie par
lutilisateur sutilise exactement comme dautres fonctions dagrgat non
intgres, sous rserve des autorisations.

379
Adaptive Server Anywhere traite toutes les fonctions dfinies par
lutilisateur comme idempotentes, sauf si elles sont dclares comme NOT
DETERMINISTIC. Les fonctions idempotentes renvoient un rsultat
cohrent pour les mmes paramtres et ne prsentent aucun effet secondaire.
Cela signifie que le serveur suppose que deux appels successifs de la mme
fonction avec les mmes paramtres renverront le mme rsultat et nauront
aucun effet secondaire inattendu sur la smantique de la requte.
Lorsquune fonction renvoie un jeu de rsultats, elle ne peut pas aussi dfinir
des paramtres de sortie ni renvoyer une valeur de retour.
Pour les fonctions clientes de service Web, le type de renvoi des fonctions
SOAP et HTTP doit correspondre lun des types de donnes de caractres,
tels que VARCHAR. La valeur renvoye est le corps de la rponse HTTP.
Aucune information den-tte HTTP nest incluse. Si des informations
supplmentaires, comme des informations dtat, sont ncessaires, utilisez
une procdure plutt quune fonction.
Les valeurs des paramtres sont transmises en tant que partie intgrante de la
demande. La syntaxe utilise dpend du type de la demande. Pour
HTTP:GET, les paramtres sont transmis dans lURL ; pour les demandes
HTTP:POST, les valeurs sont places dans le corps de la demande ; pour les
demandes SOAP, les paramtres sont toujours intgrs au corps de la
demande.
Autorisations Droits RESOURCE requis.
Les fonctions externes, y compris les fonctions Java, doivent dtenir les
droits DBA.
Effets secondaires Commit automatique.
Voir aussi Instruction ALTER FUNCTION la page 285
Instruction CREATE PROCEDURE la page 390
Instruction DROP la page 474
Instruction BEGIN la page 324
Instruction CREATE PROCEDURE la page 390
Instruction RETURN la page 611
Utilisation des procdures, des triggers et des batchs [ASA - Guide de
lutilisateur SQL, page 701]

Normes et compatibilit SQL/92 Fonctionnalit de module stock de manire permanente.


SQL/99 Fonctionnalit de module stock de manire permanente.
Sybase Non prise en charge par Adaptive Server Enterprise.
Linstruction CREATE FUNCTION est prise en charge par Microsoft
SQL Server.

380
Chapitre 4. Instructions SQL

Exemples La fonction suivante effectue une concatnation dune chane contenant un


prnom (firstname) et dune chane contenant un nom de famille (lastname) :
CREATE FUNCTION fullname (
firstname CHAR(30),
lastname CHAR(30) )
RETURNS CHAR(61)
BEGIN
DECLARE name CHAR(61);
SET name = firstname || || lastname;
RETURN (name);
END

Les exemples ci-aprs illustrent lutilisation de la fonction fullname.


Renvoi dun nom complet partir de deux chanes distinctes :
SELECT fullname (joe,smith)

fullname(joe,smith)

joe smith
Liste des noms de tous les employs :
SELECT fullname (emp_fname, emp_lname)
FROM employee

nom_complet (emp_fname, emp_lname)

Fran Whitney

Matthew Cobb

Philip Chin

Julie Jordan
...
La fonction suivante utilise la syntaxe Transact-SQL :
CREATE FUNCTION DoubleIt ( @Input INT )
RETURNS INT
AS
DECLARE @Result INT
SELECT @Result = @Input * 2
RETURN @Result

Linstruction SELECT DoubleIt( 5 ) renvoie la valeur 10.


Linstruction suivante cre une fonction externe crite en Java :

381
CREATE FUNCTION dba.encrypt( IN name char(254) )
RETURNS VARCHAR
EXTERNAL NAME
Scramble.encrypt (Ljava/lang/String;)Ljava/lang/String;
LANGUAGE JAVA

382
Chapitre 4. Instructions SQL

Instruction CREATE INDEX


Description Crer un index sur une table spcifie. Les index permettent damliorer les
performances dune base de donnes.
Syntaxe CREATE [ VIRTUAL ] [ UNIQUE ] [ CLUSTERED ] INDEX nom_index
ON [ propritaire.]nom_table
( nom_colonne [ ASC | DESC ], . . .
| nom_fonction ( argument [ ,. . . ] ) AS nom_colonne )
[ { IN | ON } nom_dbspace ]

Paramtres Mot-cl VIRTUAL Le mot-cl VIRTUAL est principalement destin une


utilisation par lassistant de paramtrage dindex. Un index virtuel mule les
proprits dun index physique rel au cours de lvaluation de plans
dexcution des requtes par lassistant de paramtrage dindex et lors de
lutilisation de la fonction PLAN. Vous pouvez utiliser des index virtuels
avec la fonction PLAN pour tudier les consquences en matire de
performances dun index, sans les effets souvent consommateurs de temps et
de ressources de la cration dun index rel.
Les index virtuels ne sont pas visibles par les autres connexions et sont
supprims ds la fermeture de la connexion. Ils ne sont pas utiliss lors de
lvaluation de plans pour lexcution effective de requtes, nayant ainsi
aucun effet sur les performances.
Les index virtuels sont limits quatre colonnes.
Pour plus dinformations, reportez-vous aux sections Dmarrage de
lAssistant de paramtrage dindex [ASA - Guide de lutilisateur SQL, page 74]
et Prsentation de lAssistant de paramtrage dindex [ASA - Guide de
lutilisateur SQL, page 71].

Mot-cl CLUSTERED Lattribut CLUSTERED entrane le stockage des


lignes de table selon un ordre de cl approximatif correspondant lindex.
Mme si le serveur tente de prserver lordre des cls, la clusterisation nest
pas garantie.
Si un index clusteris existe, linstruction LOAD TABLE insre des lignes
dans la table selon lordre de la cl dindex, et linstruction INSERT tente de
placer de nouvelles lignes dans la mme page de table que celle contenant
des lignes adjacentes, selon lordre dfini par la cl.
Pour plus dinformations, reportez-vous la section Utilisation dindex
clusteriss [ASA - Guide de lutilisateur SQL, page 68].
Mot-cl UNIQUE Lattribut UNIQUE sassure que deux lignes de la table
ne contiennent pas des valeurs identiques dans lensemble des colonnes de
lindex. Chaque cl dindex doit tre unique ou contenir une valeur NULL

383
dans au moins une colonne.
Il existe une diffrence entre une contrainte dunicit sur une table et un
index unique. Les colonnes dun index unique peuvent avoir la valeur
NULL, contrairement aux colonnes dune contrainte dunicit. Une cl
trangre peut rfrencer une cl primaire ou une colonne comportant une
contrainte dunicit, mais pas un index unique, car elle peut comprendre
plusieurs instances de valeurs NULL.
Option ASC | DESC Les colonnes sont tries selon un ordre ascendant
(croissant), sauf si lordre dcroissant (DESC) est explicitement spcifi. Un
index est utilis aussi bien pour un tri ascendant que pour un tri descendant
(ORDER BY), que cet index soit ascendant ou descendant. Cependant, si
une clause ORDER BY est excute avec des attributs ascendants et
descendants, un index nest utilis que sil a t cr avec les mmes
attributs ascendants et descendants.
Paramtre nom_fonction Le paramtre nom_fonction cre un index sur
une fonction intgre. Cette forme de linstruction CREATE INDEX est
pratique pour effectuer les oprations suivantes :
1. Ajoute dune colonne calcule appele nom_colonne dans la table. Cette
colonne est dfinie laide dune clause COMPUTE qui correspond la
fonction intgre spcifie, accompagne des ventuels paramtres
dfinis. Le type de donnes de la colonne est bas sur le type de rsultat
de la fonction.

2. Remplit la colonne calcule pour les lignes existantes de la table.


3. Cre un index sur la colonne.
La suppression de lindex nentrane pas celle de la colonne associe. Cette
forme de CREATE INDEX ne peut pas tre utilise sur les tables
temporaires dclares.
Pour plus dinformations sur les colonnes calcules, reportez-vous la
section Utilisation de colonnes calcules [ASA - Guide de lutilisateur SQL,
page 53].

Clause IN | ON Par dfaut, lindex est plac dans le mme fichier de base
de donnes que la table laquelle il est associ. Vous pouvez le placer dans
un fichier de base de donnes distinct ; pour ce faire, spcifiez le nom dun
dbspace. Cette fonctionnalit est surtout utile pour les bases de donnes
volumineuses car elle permet de contourner les limitations de taille de
fichier.
Pour plus dinformations sur les limites, reportez-vous la section
Limites relatives la taille et au nombre des objets de bases de donnes

384
Chapitre 4. Instructions SQL

[ASA - Guide dadministration, page 808].

Utilisation Linstruction CREATE INDEX cre un index tri sur les colonnes spcifies
de la table nomme. Les index sont automatiquement utiliss pour optimiser
les performances des requtes envoyes la base de donnes et pour trier
celles assorties dune clause ORDER BY. Une fois quun index est cr, il
nest jamais rfrenc nouveau dans une instruction SQL sauf pour
validation (VALIDATE INDEX) ou suppression (DROP INDEX).
Vous ne pouvez pas crer des index sur des vues .

Proprit de lindex Linstruction CREATE INDEX noffre aucune


possibilit de spcifier le propritaire de lindex. Les index appartiennent
toujours au propritaire de la table. Le nom de lindex doit tre unique
pour chaque propritaire.

Pas dindex sur les vues Vous ne pouvez pas crer dindex pour les
vues.

Namespace dindex Le nom de chaque index doit tre unique pour une
table spcifie.

Utilisation exclusive de la table Linstruction CREATE INDEX est


interdite chaque fois quelle concerne une table en cours dutilisation par
une autre connexion. CREATE INDEX peut tre consommatrice de
temps et le serveur ne traite plus aucune demande faisant rfrence cette
table pendant le traitement de linstruction.
Index crs automatiquement Adaptive Server Anywhere cre
automatiquement des index pour les cls primaires et pour des contraintes
uniques. Ces index crs automatiquement se trouvent dans le mme
fichier de base de donnes que la table.

Autorisations Vous devez tre le propritaire de la table ou dtenir les droits DBA
(administrateur de la base de donnes) ou REFERENCES.
Effets secondaires Commit automatique. La cration dun index sur une fonction intgre
provoque galement un point de reprise.
Les statistiques de colonnes sont mises jour.
Voir aussi Instruction DROP la page 474
Index [ASA - Guide de lutilisateur SQL, page 462]
Types dindex [ASA - Guide de lutilisateur SQL, page 468]
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

385
Sybase Linstruction CREATE INDEX dAdaptive Server Enterprise
est plus complexe que celle dAdaptive Server Anywhere. La syntaxe
Adaptive Server Enterprise est autorise dans Adaptive Server Anywhere,
mais certaines clauses et certains mots-cls sont ignors.
Voici la syntaxe complte pour Adaptive Server Enterprise 11.5 :
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ]
INDEX nom_index
ON [ [ base_de_donnes.]propritaire.]nom_table
(nom_colonne [, nom_colonne], . . .)
[ WITH {
{ FILLFACTOR | MAX_ROWS_PER_PAGE } = x,
CONSUMERS = x,
. . . IGNORE_DUP_KEY,
. . . SORTED_DATA,
[ IGNORE_DUP_ROW | ALLOW_DUP_ROW ]
}]
[ ON nom_segment ]
Adaptive Server Anywhere admet (en les ignorant) les mots-cls suivants
:
FILLFACTOR
IGNORE_DUP_KEY
SORTED_DATA
IGNORE_DUP_ROW
ALLOW_DUP_ROW
Le placement physique dun index est ralis de faon diffrente dans
Adaptive Server Enterprise et dans Adaptive Server Anywhere. Adaptive
Server Anywhere prend en charge la clause ON nom_segment, mais
nom_segment fait rfrence un dbspace.
Les index uniques dans Adaptive Server Anywhere autorisent des entres
contenant la valeur NULL, et sont identiques par ailleurs. Les index
uniques dans Adaptive Server Enterprise nautorisent pas des entres
contenant la valeur NULL, et sont identiques par ailleurs.
Dans Adaptive Server Anywhere et Enterprise, les noms dindex doivent
tre uniques dans une table donne.
Exemple Cration dun index de deux colonnes sur la table employee :
CREATE INDEX employee_name_index
ON employee
( emp_lname, emp_fname )

Cration dun index sur la table sales_order_items pour la colonne dID


produit (prod_id) :

386
Chapitre 4. Instructions SQL

CREATE INDEX item_prod


ON sales_order_items
( prod_id )

Utilisez la fonction SORTKEY pour crer un index sur la colonne


description de la table product, trie selon un classement russe. Linstruction
a pour effet secondaire dajouter une colonne calcule desc_ru dans la table.
CREATE INDEX ix_desc_ru
ON product (
SORTKEY( description, rusdict )
AS desc_ru )

387
Instruction CREATE MESSAGE [T-SQL]
Description Ajouter un message utilisateur dans la table systme
SYSUSERMESSAGES, destin aux instructions PRINT et RAISERROR.
Syntaxe CREATE MESSAGE numro_message AS texte_message

numro_message : entier

texte_message : chane

Paramtres numro_message Numro du message ajouter ; doit tre suprieur ou


gal 20 000 dans le cas dun message dfini par lutilisateur.
texte_message Texte du message ajouter. La longueur maximale est de
255 octets. PRINT et RAISERROR reconnaissent les marques de
rservation dans le texte du message. Un message peut contenir jusqu 20
marques distinctes, dans un ordre quelconque. Lorsque le message est
envoy au client, ces marques de rservation sont remplaces par le contenu
format des arguments qui suivent le message.
Les marques tant numrotes, il est possible de rorganiser les arguments
en cas de traduction dun message dans une langue possdant une structure
grammaticale diffrente. La marque de rservation dun argument apparat
sous la forme %nn ! cest--dire un signe pourcentage suivi dun entier de
1 20 et dun point dexclamation ( !), o lentier reprsente la position de
largument dans la liste des arguments. %1 ! est le premier argument,
%2 ! est le second paramtre, etc.
Aucun paramtre ne correspond largument langue de sp_addmessage.
Utilisation CREATE MESSAGE associe un numro de message une chane de
message. Le numro de message peut tre utilis dans les instructions
PRINT et RAISERROR.
Pour supprimer un message, reportez-vous la section Instruction DROP
la page 474.
Autorisations Vous devez dtenir les droits RESOURCE.
Effets secondaires Commit automatique.
Voir aussi Instruction PRINT [T-SQL] la page 593
Instruction RAISERROR [T-SQL] la page 596
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.

388
Chapitre 4. Instructions SQL

Sybase Dans Adaptive Server Enterprise, la fonctionnalit CREATE


MESSAGE est fournie par la procdure sp_addmessage.

389
Instruction CREATE PROCEDURE
Description Crer une procdure dans la base de donnes.
Syntaxe 1 CREATE PROCEDURE [ propritaire.]nom_procdure ( [ paramtre, . . . ] )
{ [ RESULT ( colonne_rsultat, . . . ) | NO RESULT SET ]
[ ON EXCEPTION RESUME ]
instruction_compound
| AT chane_emplacement
| EXTERNAL NAME appel_bibliothque
| [ DYNAMIC RESULT SETS expression_entier ]
[ EXTERNAL NAME appel_java LANGUAGE JAVA ]
}

Syntaxe 2 CREATE PROCEDURE [ propritaire.]nom_procdure ( [ paramtre, . . . ] )


instruction_compound

Syntaxe 3 CREATE PROCEDURE [ propritaire.]nom_procdure ( [ paramtre, . . . ] )


URL chane_url
[ TYPE { HTTP[:{GET|POST}] | SOAP[:{RPC|DOC}] } ]
[ NAMESPACE chane_namespace ]
[ CERTIFICATE chane_certificat ]
[ CLIENTPORT chane_clientport ]
[ PROXY chane_proxy ]

chane_url :
{HTTP|HTTPS}://[utilisateur :mot_de_passe@]nom_hte[:port][/chemin]

paramtre :
mode_paramtre nom_paramtre type_donnes [ DEFAULT expression ]
| SQLCODE
| SQLSTATE
mode_paramtre : IN | OUT | INOUT

colonne_rsultat : nom_colonne type_donnes

appel_bibliothque :
[systme_exploitation:]nom_fonction@bibliothque; . . .

systme_exploitation :
Windows95 | WindowsNT | NetWare | UNIX
appel_java :
[nom_package.]nom_classe.nom_mthode signature_mthode

signature_mthode :
([descripteur_champ, . . . ]) descripteur_retour

descripteur_champ | descripteur_retour :
Z | B | S | I | J | F | D | C | V | [descripteur | Lnom_classe;

390
Chapitre 4. Instructions SQL

Paramtres Clause CREATE PROCEDURE Les noms de paramtres doivent tre


conformes aux rgles des autres identificateurs de base de donnes, tels que
les noms de colonnes. Ils doivent avoir un type de donnes SQL correct (voir
Types de donnes SQL la page 55). Les paramtres peuvent tre
prcds du mot-cl IN, OUT ou INOUT. Si aucune de ces valeurs nest
spcifie, les paramtres INOUT sont alors dfinis par dfaut. La
signification de ces mots-cls est la suivante :
IN Le paramtre est une expression qui fournit une valeur la
procdure ;
OUT Le paramtre est une variable laquelle la procdure peut attribuer
une valeur ;
INOUT Le paramtre est une variable qui fournit une valeur et qui peut
tre modifie par la procdure.
Lorsque les procdures sont excutes laide de linstruction CALL, il
nest pas ncessaire que tous les paramtres soient spcifis. Si une valeur
par dfaut est fournie dans linstruction CREATE PROCEDURE, les valeurs
par dfaut sont affectes aux paramtres manquants. Si aucun argument nest
fourni dans linstruction CALL et quaucune valeur par dfaut nest dfinie,
une erreur est gnre.
SQLSTATE et SQLCODE sont des paramtres spciaux qui rcuprent la
valeur SQLSTATE ou SQLCODE la fin de la procdure (il sagit de
paramtres OUT). Que les paramtres SQLSTATE et SQLCODE soient ou
non spcifis, les valeurs spciales SQLSTATE et SQLCODE peuvent
toujours tre vrifies immdiatement aprs un appel de procdure, pour
tester le code retour de la procdure.
Les valeurs spciales SQLSTATE et SQLCODE sont modifies par
linstruction SQL suivante. Si SQLSTATE ou SQLCODE est fourni en tant
quargument de procdure, le code retour peut tre enregistr dans une
variable.
Clause RESULT Dclare le nombre et le type de colonnes dans le jeu de
rsultats. La liste entre parenthses suivant le mot-cl RESULT dfinit les
noms et les types de colonne de rsultat. Ces informations sont renvoyes
par linstruction DESCRIBE dEmbedded SQL ou par la fonction
SQLDescribeCol dODBC lorsquune instruction CALL est en cours de
description. Les types de donnes admis sont rcapituls dans la section
Types de donnes SQL la page 55.
Pour plus dinformations sur le renvoi des jeux de rsultats par des
procdures, reportez-vous la section Renvoi de rsultats partir de
procdures [ASA - Guide de lutilisateur SQL, page 735].

391
Certaines procdures peuvent renvoyer plusieurs jeux de rsultats, avec des
nombres de colonnes diffrents, selon la faon dont elles sont excutes. Par
exemple, la procdure suivante renvoie deux colonnes dans certaines
circonstances et une seule dans dautres :
CREATE PROCEDURE names( IN formal char(1))
BEGIN
IF formal = n THEN
SELECT emp_fname
FROM employee
ELSE
SELECT emp_lname,emp_fname
FROM employee
END IF
END

Les procdures avec des jeux de rsultats variables doivent tre crites sans
la clause RESULT ou avec Transact-SQL. Leur utilisation est soumise aux
restrictions suivantes :
Embedded SQL Afin dobtenir le jeu de rsultats dans sa forme
correcte, vous devez dcrire (DESCRIBE) lappel de procdure aprs
louverture du curseur du jeu de rsultats, mais avant quune ligne soit
renvoye. La clause CURSOR nom_curseur de linstruction DESCRIBE
est requise.
ODBC, OLEDB, ADO.NET Les procdures avec jeu de rsultats variable
sont exploitables dans les applications qui utilisent ces interfaces. La
description correcte des jeux de rsultats est effectue par le pilote ou le
fournisseur.
Applications Open Client Les procdures avec jeu de rsultats variable
sont exploitables dans les applications Open Client.
Si votre procdure renvoie uniquement un jeu de rsultats, utilisez une clause
RESULT. Cette clause vite que les applications ODBC et Open Client
dcrivent de nouveau le jeu de rsultats aprs louverture dun curseur.
Pour traiter des jeux de rsultats multiples, ODBC doit dcrire le curseur en
cours dexcution et non le jeu dfini par la procdure. Cest pourquoi
ODBC ne dcrit pas toujours les noms de colonnes tels quils sont dfinis
dans la clause RESULT de la dfinition de procdure. Pour viter ce
problme, utilisez les alias de colonne de linstruction SELECT qui gnre
le jeu de rsultats.
Clause NO RESULT SET Indique quaucun jeu de rsultats nest renvoy
par cette procdure. Cette clause est particulirement utile lorsquun
environnement externe doit savoir quune procdure ne renvoie pas de jeu de
rsultats.

392
Chapitre 4. Instructions SQL

Clause ON EXCEPTION RESUME Cette clause active la gestion derreurs


de type Transact-SQL utiliser dans une procdure de syntaxe
Watcom-SQL.
Si vous spcifiez ON EXCEPTION RESUME, la procdure agit en fonction
du paramtre de loption ON_TSQL_ERROR. Si ON_TSQL_ERROR est
dfini sur CONDITIONAL (valeur par dfaut), lexcution se poursuit si
linstruction suivante gre lerreur ; sinon, lexcution sarrte.
Les instructions de gestion des erreurs sont les suivantes :

IF

SELECT @variable =
CASE

LOOP
LEAVE
CONTINUE

CALL
EXECUTE
SIGNAL

RESIGNAL
DECLARE
SET VARIABLE

Evitez dutiliser un code de gestion derreurs explicite avec une clause ON


EXCEPTION RESUME.
Pour plus dinformations, reportez-vous la section Option
ON_TSQL_ERROR [compatibilit] [ASA - Guide dadministration, page 734].
Clause EXTERNAL NAME Une procdure utilisant la clause EXTERNAL
NAME constitue une enveloppe autour dun appel une bibliothque
externe. Une fonction utilisant la clause EXTERNAL NAME ne peut pas
comporter dautres clauses suivant la liste des paramtres. Le nom
bibliothque peut comprendre lextension de fichier, en principe .dll sous
Windows, .so sous UNIX et .nlm sous NetWare. En labsence dextension, le
logiciel ajoute lextension de fichier par dfaut propre dans la plate-forme
pour les bibliothques. Sous NetWare, si aucun nom NLM nest donn, le

393
NLM contenant le symbole doit dj tre charg lors de lappel de la
fonction.
Pour plus dinformations sur les appels de bibliothque externes,
reportez-vous la section Appel de bibliothques externes partir de
procdures [ASA - Guide de lutilisateur SQL, page 760].
Clause AT chane_emplacement Cre une procdure stocke proxy sur la
base de donnes courante pour une procdure distante spcifie par
chane_emplacement. La clause AT accepte le point-virgule ( ;) comme
dlimiteur. Sinon, un point sert de dlimiteur de champ. Cela permet
dutiliser des noms de fichier et des extensions dans les champs base de
donnes et propritaire.
Par exemple, linstruction suivante cre une procdure proxy (remotewho)
qui appelle la procdure dbo.sp_who sur la base de donnes master du
serveur bostonase :
CREATE PROCEDURE remotewho ()
AT bostonase.master.dbo.sp_who

Les procdures distantes ne peuvent renvoyer quun maximum de 254


caractres dans les variables de sortie.
Pour plus dinformations sur les serveurs distants, reportez-vous la
section Instruction CREATE SERVER la page 409. Pour plus
dinformations sur lutilisation des procdures distantes, reportez-vous la
section Appels de procdure distante (RPC) [ASA - Guide de lutilisateur
SQL, page 669].

Clause DYNAMIC RESULT SETS Cette clause est destine aux procdures
constituant des enveloppes autour des mthodes Java. Si la clause
DYNAMIC RESULT SETS nest pas fournie, aucun jeu de rsultats nest
attendu.
Clause URL Uniquement employe lors de la dfinition dune fonction
cliente des services Web HTTP ou SOAP. Indique lURI du service Web.
Les paramtres facultatifs de mot de passe et dutilisateur permettent de
fournir les informations didentification ncessaires lauthentification
HTTP Basic. Lauthentification HTTP Basic de base 64 code les
informations dutilisateur et de mot de passe, puis les transmet len-tte
Authentication de la demande HTTP.
Clause TYPE Spcifie le format utilis lors de la demande de service Web.
Lorsque SOAP est spcifi ou quaucune clause Type nest incluse, le type
utilis par dfaut est SOAP:RPC. HTTP implique lutilisation de
HTTP:POST. Comme les demandes SOAP sont toujours envoyes en tant
que documents XML, HTTP:POST est toujours utilis.

394
Chapitre 4. Instructions SQL

Clause NAMESPACE Sapplique uniquement aux procdures clientes


SOAP. Cette clause identifie le namespace de mthode gnralement requis
pour les demandes SOAP:RPC et SOAP:DOC. Le serveur SOAP traitant la
demande utilise ce namespace pour interprter les noms des entits du corps
du message de la demande SOAP. Le namespace peut tre obtenu partir de
la description WSDL du service SOAP disponible auprs du serveur du
service Web. La valeur par dfaut est constitue de lURL de la procdure
jusquau composant de chemin facultatif (non compris).
Clause CERTIFICATE Afin de procder une demande scurise
(HTTPS), un client doit avoir accs au certificat utilis par le serveur
HTTPS. Les informations ncessaires sont spcifies dans une chane de
paires cl/valeur spares par des points-virgules. Le certificat peut tre
plac soit dans un fichier dont le nom est fourni au moyen de la cl file, soit
dans une chane (il ne peut pas tre plac dans les deux la fois). Les cls
suivantes sont disponibles :

Cl Abr- Description
viation

file Nom de fichier du certificat.

certifi- cert Le certificat lui-mme.


cate

company co La socit mentionne dans le certificat.

unit Lunit dorganisation spcifie dans le certificat.

name Le nom courant spcifi dans le certificat.


Les certificats ne sont requis que pour les demandes diriges vers un serveur
HTTPS ou susceptibles dtre rediriges dun serveur non scuris vers un
serveur scuris. Aucune valeur de certificat nest exige lors dun envoi
vers un serveur de base de donnes Adaptive Server Anywhere acceptant les
demandes HTTPS, moins quun paramtre de certificat nait t utilis au
dmarrage du serveur.
Clause CLIENTPORT Indique le numro de port sur lequel la procdure
cliente HTTP communique via TCP/IP. Elle est uniquement fournie et
recommande pour les connexions passant par des pare-feux puisque ceux-ci
effectuent un filtrage en fonction du port TCP/UDP. Vous pouvez spcifier
un numro de port unique ou des plages de numros de port, ou une
combinaison des deux, par exemple CLIENTPORT 85,90-97.
Pour plus dinformations, reportez-vous la section Option de
protocole ClientPort [CPORT] [ASA - Guide dadministration, page 234].

395
Clause PROXY Spcifie lURI du serveur proxy. Elle est uniquement
employe lorsque le client doit accder au rseau via un proxy. Elle indique
quune connexion doit tre tablie au serveur proxy et que la demande doit
tre envoye au service Web par son intermdiaire.
Clause EXTERNAL NAME LANGUAGE JAVA Une procdure utilisant la
clause EXTERNAL NAME avec une clause LANGUAGE JAVA constitue
une enveloppe autour dune mthode Java.
Si le nombre de paramtres est infrieur au nombre indiqu dans la signature
de mthode, la diffrence doit tre gale au nombre spcifi dans DYNAMIC
RESULT SETS, et chaque paramtre qui, dans la signature de mthode, est
en excs par rapport ceux de la liste des paramtres de la procdure, doit
avoir une signature de mthode de la forme [Ljava/SQL/ResultSet ;.
Une signature de mthode Java est une reprsentation compacte en mode
caractres du type des paramtres et de celui des valeurs renvoyes. Il ne faut
pas placer despace avant la signature.
Les valeurs de descripteur_champ et descripteur_retour ont les significations
suivantes :

Type de Type de donnes Java


champ

B byte

C caractre

D double

F float

I int

J long

Lnom_- instance de la classe nom_classe. Le nom de classe doit tre


classe ; complet et tout point ventuel doit tre remplac par une
barre oblique (/). Par exemple, java/lang/String

S short

V void
Z Boolen

[ en utiliser un pour chaque dimension dun tableau

Par exemple :

396
Chapitre 4. Instructions SQL

double some_method(
boolean a,
int b,
java.math.BigDecimal c,
byte [][] d,
java.SQL.ResultSet[] rs ) {
}

a la signature :
(ZILjava/math/BigDecimal;[[B[Ljava/SQL/ResultSet;)D

Pour plus dinformations, reportez-vous la section Renvoi de jeux de


rsultats partir de mthodes Java [ASA - Guide de programmation, page 103].
Utilisation Linstruction CREATE PUBLICATION cre une publication dans la base de
donnes. Les utilisateurs dtenant les droits DBA peuvent crer des
procdures pour dautres utilisateurs en spcifiant un propritaire (owner).
Une procdure est appele laide dune instruction CALL.
Lorsquune procdure stocke renvoie un jeu de rsultats, elle ne peut pas
aussi dfinir des paramtres de sortie ni renvoyer une valeur de retour.
Les valeurs des paramtres sont transmises en tant que partie intgrante de la
demande. La syntaxe utilise dpend du type de la demande. Pour
HTTP:GET, les paramtres sont transmis dans lURL ; pour les demandes
HTTP:POST, les valeurs sont places dans le corps de la demande ; pour les
demandes SOAP, les paramtres sont toujours intgrs au corps de la
demande.
Pour les procdures clientes de service Web, les valeurs des paramtres sont
transmises en tant que partie intgrante de la demande. La syntaxe utilise
dpend du type de la demande. Pour HTTP:GET, les paramtres sont
transmis dans lURL ; pour les demandes HTTP:POST, les valeurs sont
places dans le corps de la demande ; pour les demandes SOAP, les
paramtres sont toujours intgrs au corps de la demande.
Autorisations Droits RESOURCE requis.
Pour les procdures externes, vous devez dtenir les droits DBA
(administrateur de la base de donnes) ou crer une procdure pour un autre
utilisateur.
Effets secondaires Commit automatique.
Voir aussi Instruction BEGIN la page 324
Instruction CALL la page 330
Instruction CREATE FUNCTION la page 376
Instruction CREATE PROCEDURE [T-SQL] la page 400

397
Instruction ALTER PROCEDURE la page 288
Instruction DROP la page 474
Instruction EXECUTE IMMEDIATE [SP] la page 495
Instruction GRANT la page 524
Utilisation des procdures, des triggers et des batchs [ASA - Guide de
lutilisateur SQL, page 701]

Normes et compatibilit SQL/92 Fonctionnalit de module stock de manire permanente.


SQL/99 Fonctionnalit de module stock de manire permanente.

Sybase Linstruction Transact-SQL CREATE PROCEDURE est


diffrente.

SQLJ Les extensions de syntaxe pour les jeux de rsultats Java sont
telles quelles sont spcifies dans la norme SQLJ1 propose.
Exemples La procdure suivante utilise une instruction CASE pour classer les rsultats
dune requte :
CREATE PROCEDURE ProductType (IN product_id INT, OUT type
CHAR(10))
BEGIN
DECLARE prod_name CHAR(20);
SELECT name INTO prod_name FROM "DBA"."product"
WHERE id = product_id;
CASE prod_name
WHEN Tee Shirt THEN
SET type = Shirt
WHEN Sweatshirt THEN
SET type = Shirt
WHEN Baseball Cap THEN
SET type = Hat
WHEN Visor THEN
SET type = Hat
WHEN Shorts THEN
SET type = Shorts
ELSE
SET type = UNKNOWN
END CASE;
END

La procdure suivante utilise un curseur et effectue une boucle sur les lignes
du curseur pour renvoyer une valeur unique :

398
Chapitre 4. Instructions SQL

CREATE PROCEDURE TopCustomer (OUT TopCompany CHAR(35), OUT


TopValue INT)
BEGIN
DECLARE err_notfound EXCEPTION
FOR SQLSTATE 02000;
DECLARE curThisCust CURSOR FOR
SELECT company_name,
CAST(sum(sales_order_items.quantity *
product.unit_price) AS INTEGER) VALUE
FROM customer
LEFT OUTER JOIN sales_order
LEFT OUTER JOIN sales_order_items
LEFT OUTER JOIN product
GROUP BY company_name;
DECLARE ThisValue INT;
DECLARE ThisCompany CHAR(35);
SET TopValue = 0;
OPEN curThisCust;
CustomerLoop:
LOOP
FETCH NEXT curThisCust
INTO ThisCompany, ThisValue;
IF SQLSTATE = err_notfound THEN
LEAVE CustomerLoop;
END IF;
IF ThisValue > TopValue THEN
SET TopValue = ThisValue;
SET TopCompany = ThisCompany;
END IF;
END LOOP CustomerLoop;
CLOSE curThisCust;
END

399
Instruction CREATE PROCEDURE [T-SQL]
Description Crer une procdure dans la base de donnes afin quelle soit compatible
avec Adaptive Server Enterprise.
Syntaxe 1 Adaptive Server Anywhere supporte un sous-ensemble des lments
syntaxiques de linstruction Transact-SQL CREATE PROCEDURE :
CREATE PROCEDURE [propritaire.]nom_procdure
[ NO RESULT SET ]
[ [ ( ] @nom_paramtre type_donnes [ = valeur_par_dfaut ] [ OUT-
PUT ], . . . [
)]]
[ WITH RECOMPILE ] AS liste_instructions

Paramtres Clause NO RESULT SET Indique quaucun jeu de rsultats nest renvoy
par cette procdure. Cette clause est particulirement utile lorsquun
environnement externe doit savoir quune procdure ne renvoie pas de jeu de
rsultats.
Utilisation La liste ci-aprs rpertorie les diffrences existant entre les instructions
Transact-SQL et les instructions Adaptive Server Anywhere afin que les
personnes crivant dans les deux dialectes puissent sy rfrer.
Noms de variable dots du prfixe @ Les noms de variable
Transact-SQL sont obligatoirement prcds de larrobas (@), alors que
les variables Watcom-SQL consistent en un identificateur correct
quelconque, le prfixe @ tant facultatif.
Paramtres dentre et de sortie Les paramtres par dfaut de la
procdure Watcom-SQL sont dclars comme tant INOUT mais peuvent
galement tre de type IN, OUT ou INOUT. En Transact-SQL, ils sont de
type INPUT (par dfaut) ou OUTPUT. Les paramtres qui seraient
dclars comme tant INOUT ou OUT dans Adaptive Server Anywhere
doivent tre dclars avec le mot-cl OUTPUT en Transact-SQL.

Valeurs par dfaut des paramtres Watcom-SQL fait appel au


mot-cl DEFAULT pour attribuer une valeur par dfaut un paramtre de
procdure, alors que Transact-SQL utilise un signe gal (=).
Renvoi de jeux de rsultats Watcom-SQL utilise une clause RESULT
pour spcifier les jeux de rsultats renvoys. Dans les procdures
Transact-SQL, ce sont les noms de colonne ou dalias de la premire
requte qui sont renvoys lenvironnement appelant.
La procdure Transact-SQL ci-aprs montre comment les jeux de
rsultats sont renvoys par les procdures stockes Transact-SQL :

400
Chapitre 4. Instructions SQL

CREATE PROCEDURE showdept @deptname varchar(30)


AS
SELECT employee.emp_lname, employee.emp_fname
FROM department, employee
WHERE department.dept_name = @deptname
AND department.dept_id = employee.dept_id

Voici la procdure Watcom-SQL correspondante :


CREATE PROCEDURE showdept(in deptname
varchar(30) )
RESULT ( lastname char(20), firstname char(20))
ON EXCEPTION RESUME
BEGIN
SELECT employee.emp_lname, employee.emp_fname
FROM department, employee
WHERE department.dept_name = deptname
AND department.dept_id = employee.dept_id
END

Corps dune procdure Le corps dune procdure Transact-SQL est


compos dune liste dinstructions Transact-SQL prcde du mot-cl
AS. Le corps dune procdure Watcom-SQL est constitu dune
instruction compose, dlimite par les mots-cls BEGIN et END.
Autorisations Droits RESOURCE requis.
Effets secondaires Commit automatique.
Voir aussi Instruction CREATE PROCEDURE la page 390
Normes et compatibilit SQL/92 Extension de Transact-SQL.

SQL/99 Extension de Transact-SQL.


Sybase Anywhere supporte un sous-ensemble de la syntaxe de
linstruction CREATE PROCEDURE dAdaptive Server Enterprise.
Si la clause facultative Transact-SQL WITH RECOMPILE est spcifie,
elle est ignore. Adaptive Server Anywhere recompile toujours les
procdures lors de leur premire excution aprs le dmarrage dune base
de donnes et stocke la procdure compile jusqu larrt de la base.
Les groupes de procdures ne sont pas pris en charge.

401
Instruction CREATE PUBLICATION
Description Utilisez cette instruction pour crer une publication. Dans MobiLink, une
publication identifie les donnes synchronises dans des bases de donnes
distantes UltraLite ou Adaptive Server Anywhere.
Dans SQL Remote, les publications identifient les donnes rpliques dans
les bases de donnes consolides et distantes.
Syntaxe CREATE PUBLICATION [ propritaire.]nom_publication
( TABLE description_article, . . . )

propritaire, nom_publication : identificateur

description_article :
nom_table [ ( nom_colonne, . . . ) ]
[ WHERE condition_recherche ]
[ SUBSCRIBE BY expression ]

Paramtres description_article Les publications sont construites partir darticles.


Chaque article est une table ou une partie de table. Un article peut tre une
partition verticale dune table (un sous-ensemble des colonnes de la table),
une partition horizontale dune table (un sous-ensemble des lignes de la
table) ou une partition verticale et horizontale dune table.
Clause WHERE La clause WHERE est une faon de dfinir le
sous-ensemble de lignes dune table inclure dans un article. Elle est utile si
tous les souscripteurs de la publication doivent recevoir le mme
sous-ensemble.
Clause SUBSCRIBE BY Dans SQL Remote, la clause subscribe by permet
de dfinir le sous-ensemble de lignes dune table inclure dans un article.
Cette clause permet un grand nombre de souscripteurs de recevoir des
lignes diffrentes dune table dans une dfinition de publication unique. Elle
est ignore lors de la synchronisation MobiLink.
Vous pouvez combiner les clauses WHERE et SUBSCRIBE BY dans la
dfinition dun article, mais la clause SUBSCRIBE BY nest utilise que par
SQL Remote.
Utilisation Cette instruction sapplique uniquement MobiLink et SQL Remote.
Linstruction CREATE PUBLICATION cre une publication dans la base de
donnes. Vous pouvez crer une publication pour un autre utilisateur en
spcifiant le nom du propritaire.
Dans MobiLink, les publications sont ncessaires dans les bases de donnes
distantes Adaptive Server Anywhere, et sont facultatives dans les bases de
donnes UltraLite. Ces publications, ainsi que les souscriptions qui leur sont

402
Chapitre 4. Instructions SQL

associes, dterminent les donnes qui seront tlcharges dans le serveur de


synchronisation MobiLink. Vous pouvez construire une base de donnes
distante en crant des publications et des souscriptions directement. Vous
pouvez galement crer des publications et des souscriptions dans une base
de donnes de rfrence Adaptive Server Anywhere, qui fait office de
modle pour les bases de donnes distantes, puis crer les bases de donnes
distantes laide de lutilitaire dextraction MobiLink.
Les options dune publication MobiLink peuvent tre dfinies laide de la
clause ADD OPTION soit dans linstruction ALTER SYNCHRONIZATION
SUBSCRIPTION, soit dans linstruction CREATE SYNCHRONIZATION
SUBSCRIPTION.
Dans SQL Remote, la publication est une opration bidirectionnelle, dans la
mesure o des donnes peuvent tre entres dans la base de donnes
consolide et dans la base de donnes distante. Dans une installation SQL
Remote, toute base de donnes consolide et toutes les bases de donnes
distantes doivent avoir la mme dfinition de publication. Si vous excutez
lutilitaire dextraction SQL Remote partir dune base de donnes
consolide, linstruction CREATE PUBLICATION correcte est
automatiquement excute dans la base de donnes distante.
Autorisations Vous devez dtenir les droits DBA. Laccs exclusif toutes les tables
rfrences dans linstruction est requis.
Effets secondaires Commit automatique.
Voir aussi Instruction ALTER PUBLICATION la page 290
Instruction DROP PUBLICATION la page 479
Instruction ALTER SYNCHRONIZATION SUBSCRIPTION
[MobiLink] la page 301
Instruction CREATE SYNCHRONIZATION SUBSCRIPTION
[MobiLink] la page 419
Procdure sp_create_publication [SQL Remote - Guide de lutilisateur,
page 424]
Clients Adaptive Server Anywhere MobiLink : Publication de donnes
[Clients MobiLink, page 71]
Clients UltraLite MobiLink : Choix des donnes synchroniser [Clients
MobiLink, page 302]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.
Exemple Linstruction suivante publie toutes les colonnes et toutes les lignes des deux
tables :

403
CREATE PUBLICATION pub_contact (
TABLE contact,
TABLE company
)

Linstruction suivante publie uniquement certaines colonnes dune table :


CREATE PUBLICATION pub_customer (
TABLE customer ( id, company_name, city )
)

Linstruction suivante publie uniquement les lignes actives du client en


incluant une clause WHERE qui teste la colonne de statut de la table
customer :
CREATE PUBLICATION pub_customer (
TABLE customer ( id, company_name, city, state )
WHERE status = active
)

Linstruction ci-aprs publie uniquement certaines lignes en fournissant une


valeur subscribe by. Cette mthode ne peut tre utilise quavec SQL
Remote.
CREATE PUBLICATION pub_customer (
TABLE customer ( id, company_name, city, state )
SUBSCRIBE BY state
)

Lorsque vous crez une souscription SQL Remote, la valeur subscribe by est
utilise comme suit :
CREATE SUBSCRIPTION TO pub_customer ( NY )
FOR jsmith

404
Chapitre 4. Instructions SQL

Instruction CREATE REMOTE MESSAGE TYPE


[SQL Remote]
Description Utilisez cette instruction pour identifier une liaison de message et une
adresse de retour pour les messages sortants dune base de donnes.
Syntaxe CREATE REMOTE MESSAGE TYPE systme_messagerie
ADDRESS adresse
systme_messagerie : FILE | FTP | MAPI | SMTP | VIM

adresse : chane

Paramtres systme_messagerie Un des systmes de messagerie pris en charge.


adresse Adresse du systme du messagerie spcifi.
Utilisation Lagent de message envoie des messages sortants dune base de donnes
laide de lune des liaisons de message prises en charge pour les utilisateurs
qui utilisent la liaison spcifie. Les messages sont envoys ladresse
spcifie tant que la base de donnes distante est cre par lutilitaire
dextraction. Lagent de message dmarre les liaisons uniquement sil existe
des utilisateurs distants pour ces liaisons.
Ladresse est celle de lditeur indiqu sous le systme de messagerie
spcifi. Sil sagit dun systme de messagerie lectronique, la chane
dadresse doit tre une adresse lectronique correcte. Sil sagit dun
systme de partage de fichiers, la chane dadresse est un sous-rpertoire du
rpertoire dfini dans la variable denvironnement SQLREMOTE ou du
rpertoire courant. Vous pouvez modifier la valeur de la chane dadresse
dans linstruction GRANT CONSOLIDATE au niveau de la base de donnes
distante.
Lutilitaire dinitialisation cre automatiquement des types de message sans
adresse. Contrairement aux autres instructions CREATE, linstruction
CREATE REMOTE MESSAGE TYPE ne renvoie pas derreur si le type
existe ; elle le modifie.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Commit automatique.
Voir aussi Instruction GRANT PUBLISH [SQL Remote] la page 531
Instruction GRANT REMOTE [SQL Remote] la page 532
Instruction GRANT CONSOLIDATE [SQL Remote] la page 529
Instruction DROP REMOTE MESSAGE TYPE [SQL Remote] la
page 480
Procdure sp_remote_type [SQL Remote - Guide de lutilisateur, page 465]

405
Utilisation de types de message [SQL Remote - Guide de lutilisateur,
page 229]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.

Exemple Lorsque des bases de donnes distantes sont extraites laide de lutilitaire
dextraction, linstruction suivante dfinit tous les destinataires des messages
du systme de messagerie pour renvoyer les messages au sous-rpertoire
company.
Cette instruction charge galement dbremote de rechercher les messages
entrants dans le sous-rpertoire company.
CREATE REMOTE MESSAGE TYPE file
ADDRESS company

406
Chapitre 4. Instructions SQL

Instruction CREATE SCHEMA


Description Crer une collection de tables, de vues et dautorisations pour lutilisateur
dune base de donnes.
Syntaxe CREATE SCHEMA AUTHORIZATION ID_utilisateur
[
instruction_crer_table
| instruction_crer_vue
| instruction_octroyer
], . . .

Utilisation Linstruction CREATE SCHEMA cre un schma. Un schma est une


collection de tables, de vues et de leurs autorisations associes.
Id_utilisateur doit tre lID utilisateur associ la connexion courante. Vous
ne pouvez pas crer de schma pour un autre utilisateur.
Si une instruction de CREATE SCHEMA choue, la totalit de linstruction
CREATE SCHEMA est annule.
Linstruction CREATE SCHEMA constitue un moyen de rassembler des
instructions CREATE et GRANT individuelles en une seule opration.
Aucun objet de base de donnes SCHEMA nest cr dans la base ; pour
annuler les objets, vous devez utiliser les instructions individuelles DROP
TABLE ou DROP VIEW. Pour rvoquer les autorisations, vous devez
utiliser une instruction REVOKE pour chaque autorisation octroye.
Les instructions CREATE ou GRANT individuelles ne sont pas spares par
des dlimiteurs. Un dlimiteur dinstruction marque la fin de linstruction
CREATE SCHEMA elle-mme.
Les instructions CREATE ou GRANT individuelles doivent tre ordonnes
de telle faon que les objets soient crs avant que les autorisations ne leur
soient octroyes.
Il est possible, mais dconseill, de crer plusieurs schmas pour un
utilisateur ; les versions ultrieures ne le permettront peut-tre plus.
Autorisations Droits RESOURCE requis.
Effets secondaires Commit automatique.
Voir aussi Instruction CREATE TABLE la page 425
Instruction CREATE VIEW la page 448
Instruction GRANT la page 524
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.
SQL/99 Fonction principale.

407
Sybase Adaptive Server Anywhere ne prend pas en charge les clauses
REVOKE dans linstruction CREATE SCHEMA et interdit lemploi de
cette dernire dans des batchs ou des procdures Transact-SQL.
Exemple Linstruction CREATE SCHEMA ci-aprs cre un schma constitu de deux
tables. Linstruction doit tre excute par lID utilisateur sample_user,
lequel doit dtenir les droits RESOURCE. Si linstruction qui permet la
cration de la table t2 choue, aucune des tables nest cre.
CREATE SCHEMA AUTHORIZATION sample_user
CREATE TABLE t1 ( id1 INT PRIMARY KEY )
CREATE TABLE t2 ( id2 INT PRIMARY KEY );

Le dlimiteur de linstruction CREATE SCHEMA ci-aprs est plac aprs la


premire instruction CREATE TABLE. Ce dlimiteur marquant la fin de
linstruction CREATE SCHEMA, lexemple est interprt comme un batch
deux instructions par le serveur de base de donnes. Par consquent, si
linstruction qui permet de crer la table t2 choue, la table t1 est quand
mme cre.
CREATE SCHEMA AUTHORIZATION sample_user
CREATE TABLE t1 ( id1 INT PRIMARY KEY );
CREATE TABLE t2 ( id2 INT PRIMARY KEY );

408
Chapitre 4. Instructions SQL

Instruction CREATE SERVER


Description Ajouter un serveur dans la table systme SYSSERVERS.
Syntaxe CREATE SERVER nom_serveur
CLASS classe_serveur
USING info_connexion
[ READ ONLY ]

classe_serveur :
ASAJDBC | ASEJDBC
| ASAODBC | ASEODBC
| DB2ODBC | MSSODBC
| ORAODBC | ODBC
info_connexion :
{ nom_machine:numro_port [/nom_base ] | nom_source_donnes | chane_
connexion_asa }

Paramtres Clause CLASS Spcifie la classe de serveur que vous souhaitez utiliser
pour une connexion distante. Les classes de serveur contiennent des
informations dtailles sur les fonctionnalits des serveurs. Si vous utilisez
NetWare, seule la classe asajdbc est prise en charge.
Clause USING Fournit une chane de connexion au serveur. La chane de
connexion approprie dpend du pilote utilis, qui dpend lui-mme de la
classe_serveur.
Si une classe de serveur JDBC est utilise, la clause USING est lassociation
de nom_hte :numro_port [/nom_base ], o :
nom_hte est la machine sur laquelle est excut le serveur distant

numro_port est le numro de port TCP/IP cout par le serveur


distant. Le numro de port par dfaut pour Adaptive Server Anywhere est
2638.

nom_base est le nom de la base de donnes. Pour les serveurs distants


Adaptive Server Anywhere, si vous ne dfinissez pas ce paramtre, la
base de donnes par dfaut est utilise. Pour les serveurs Adaptive Server
Enterprise, la valeur par dfaut est la base de donnes master, et une
autre solution lutilisation de nom_base consiste spcifier une autre
base de donnes par un autre moyen (par exemple, dans linstruction
FORWARD TO).
Si une classe de serveur ODBC est utilise, la clause USING est
nom_source_donnes. Le nom de la source de donnes est celui de la source
de donnes ODBC.

409
Pour les serveurs distants Adaptive Server Anywhere (classes de serveur
ASAJDBC ou ASAODBC), le paramtre info_connexion peut tre constitu
par toute chane de connexion Adaptive Server Anywhere correcte. Vous
pouvez utiliser tout paramtre de connexion Adaptive Server Anywhere. Par
exemple, vous pouvez utiliser un paramtre LOG pour rsoudre les
problmes de connexion.
Pour plus dinformations sur les chanes de connexion Adaptive Server
Anywhere, reportez-vous la section Paramtres de connexion [ASA -
Guide dadministration, page 198].
Sur plates-formes UNIX, vous devez rfrencer galement le gestionnaire de
pilotes ODBC. Par exemple, si vous utilisez les pilotes ODBC iAnywhere
Solutions fournis, la syntaxe est la suivante :
USING driver=/opt/sybase/SYBSsa9/drivers/lib/libodbc.so;dsn=my_
dsn

READ ONLY La clause READ ONLY indique que le serveur distant utilise
une source de donnes en lecture seule. Toute demande de mise jour est
rejete par Adaptive Server Anywhere.
Utilisation Linstruction CREATE SERVER dfinit un serveur distant partir des
catalogues dAdaptive Server Anywhere.
Pour plus dinformations sur les classes de serveur et sur la configuration
dun serveur, reportez-vous la section Classes de serveurs pour laccs
aux donnes distantes [ASA - Guide de lutilisateur SQL, page 681].
Autorisations Vous devez disposer des droits DBA pour excuter cette commande.
Non prise en charge par Windows CE.
Effets secondaires Commit automatique.
Voir aussi Instruction ALTER SERVER la page 294
Instruction DROP SERVER la page 481
Classes de serveurs pour laccs aux donnes distantes [ASA - Guide de
lutilisateur SQL, page 681]

Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.

Sybase Prise en charge par Open Client/Open Server.


Exemple Lexemple suivant cre un serveur distant Adaptive Server Anywhere
nomm testasa, qui se trouve sur la machine apple et utilise le numro de
port 2638 :

410
Chapitre 4. Instructions SQL

CREATE SERVER testasa


CLASS asajdbc
USING apple:2638

Lexemple suivant cre un serveur distant pour un serveur Adaptive Server


de type JDBC nomm ase_prod. Le nom de machine est banana et le numro
de port 3025.
CREATE SERVER ase_prod
CLASS asejdbc
USING banana:3025

Lexemple suivant cre un serveur distant pour le serveur Oracle nomm


oracle723. Son nom de source de donnes ODBC est oracle723.
CREATE SERVER oracle723
CLASS oraodbc
USING oracle723

411
Instruction CREATE SERVICE
Description Permettre un serveur de base de donnes dagir en tant que serveur Web.
Syntaxe 1 CREATE SERVICE nom_service
TYPE DISH
[ GROUP { nom_groupe | NULL } ]
[ FORMAT { DNET | CONCRETE | XML | NULL } ]
[ attributs_communs ]

Syntaxe 2 CREATE SERVICE nom_service


TYPE SOAP
[ FORMAT { DNET | CONCRETE | XML | NULL } ]
[ attributs_communs ]
AS instruction
Syntaxe 3 CREATE SERVICE nom_service
TYPE { RAW | HTML | XML }
[ URL [ PATH ] { ON | OFF | ELEMENTS } ]
[ attributs_communs ]
[ AS { instruction | NULL } ]

attributs_communs :
[ AUTHORIZATION { ON | OFF } ]
[ SECURE { ON | OFF } ]
[ USER { nom_utilisateur | NULL } ]

Paramtres nom_service Les noms de service Web peuvent se composer dune suite
quelconque de caractres alphanumriques ou /, -, _, ., !, ~,
*, , ( ou ), ceci prs que le premier caractre ne doit pas tre une
barre oblique (/) et que le nom ne doit pas contenir plusieurs barres obliques
conscutives.
chane_type_service Identifie le type de service. Il doit sagir de lun des
types de service rpertoris. Il ny a pas de valeur par dfaut.
Clause AUTHORIZATION Dtermine si les utilisateurs doivent indiquer un
nom dutilisateur et un mot de passe lors de la connexion au service. Si cette
clause a la valeur OFF, la clause AS est requise et un seul utilisateur doit tre
identifi par la clause USER. Toutes les demandes sont excutes laide du
compte et des autorisations de cet utilisateur.
Si cette clause a la valeur ON, tous les utilisateurs doivent fournir un nom et
un mot de passe. Vous pouvez ventuellement limiter lutilisation de ce
service certains utilisateurs en fournissant un nom dutilisateur ou de
groupe laide de la clause USER. Si le nom dutilisateur est NULL, tous
les utilisateurs connus peuvent accder au service.
La valeur par dfaut est ON. Il est recommand dexcuter les systmes de

412
Chapitre 4. Instructions SQL

production avec la clause AUTHORIZATION active et daccorder


lautorisation dutiliser le service en ajoutant des utilisateurs dans un groupe.
Clause SECURE Indique si les connexions non scurises sont acceptes.
ON indique que seules les connexions HTTPS doivent tre acceptes. Les
demandes de service reues sur le port HTTP sont automatiquement
rachemines vers le port HTTPS. Si cette clause a la valeur OFF, les
connexions HTTP et HTTPS sont acceptes. La valeur par dfaut est OFF.
Clause USER Si la clause AUTHORIZATION est dsactive, ce
paramtre devient obligatoire et indique lID utilisateur permettant
dexcuter toutes les demandes de service. Si la clause AUTHORIZATION
est active (activation par dfaut), cette clause facultative identifie
lutilisateur ou le groupe autoris accder au service. La valeur par dfaut
est NULL, ce qui accorde laccs tous les utilisateurs.
Clause URL Dtermine si les chemins URI sont accepts et, dans ce cas,
quel traitement leur est rserv. OFF indique que rien ne doit suivre le nom
du service dans une requte URI. ON indique que la suite du chemin URI est
interprte comme la valeur dune variable nomme url. ELEMENTS
indique que la suite du chemin URI doit tre divise au niveau de la barre
oblique en une liste de 10 lments maximum. Les valeurs sont affectes aux
variables nommes url qui sont suivies dun suffixe numrique compris
entre 1 et 10 ; par exemple, les noms des trois premires variables sont url1,
url2 et url3. Si lURI comprend moins de 10 valeurs, les autres variables ont
la valeur NULL. Si le nom du service se termine par le caractre /, la clause
URL doit prendre la valeur OFF. La valeur par dfaut est OFF.
Clause GROUP Sapplique uniquement aux services DISH. Elle spcifie
un prfixe commun qui contrle les services SOAP exposs par le service
DISH. Par exemple, si GROUP xyz est spcifi, seuls les services SOAP
xyz /aaaa, xyz /bbbb ou xyz /cccc sont exposs, mais pas les services
abc/aaaa ou xyzaaaa. Si aucun nom de groupe nest spcifi, le service
DISH expose tous les services SOAP de la base de donnes. Les services
SOAP peuvent tre exposs par plusieurs services DISH. Les mmes
caractres sont autoriss dans les noms de groupe et de service.
Clause FORMAT Sapplique uniquement aux services DISH et SOAP. Elle
produit des formats de sortie compatibles avec divers types de clients SOAP,
tels que .NET ou Java JAX-RPC. Si le format dun service SOAP nest pas
spcifi, il est emprunt la dclaration de service DISH de ce service. Si le
service DISH ne dclare pas de format, DNET, qui est compatible avec les
clients .NET, est utilis par dfaut. Un service SOAP qui ne dclare pas de
format peut tre utilis avec diffrents types de clients SOAP. Pour cela,
plusieurs services DISH doivent tre dfinis, chacun avec un type FORMAT
diffrent.

413
instruction Si linstruction a la valeur NULL, lURI doit spcifier
linstruction excuter. Sinon, linstruction SQL spcifie est la seule qui
puisse tre excute par lintermdiaire du service. Linstruction est
obligatoire pour les services SOAP et ignore pour les services DISH. La
valeur par dfaut est NULL.
Il est fortement recommand que tous les services excuts dans les
systmes de production dfinissent une instruction. Linstruction peut avoir
la valeur NULL seulement si la clause AUTHORIZATION est active.
Types de formats DNET Format Microsoft DataSet pour clients .NET SOAP. DNET est la
valeur de FORMAT par dfaut et tait le seul format disponible avant la
version 9.0.2.

CONCRETE Un format DataSet de plate-forme neutre pour clients tels


que JAX-RPC ou pour ceux qui crent automatiquement des interfaces en
fonction du format de la structure des donnes renvoyes. Ce type de
format expose un lment ASADataset lintrieur du WSDL. Cet
lment dcrit le jeu de rsultats comme une hirarchie de jeu de lignes
compose dun tableau de lignes contenant chacune un tableau
dlments de colonnes.
XML Format de chane XML simple. Le DataSet est renvoy sous la
forme dune chane qui peut tre transmise un analyseur XML. Ce
format est le plus adapt entre clients SOAP.
Types de service RAW Le jeu de rsultats est envoy au client sans autre formatage. Vous
pouvez crer des documents formats en gnrant explicitement les
balises requises dans votre procdure.

HTML Le jeu de rsultats dune instruction ou procdure est


automatiquement format en document HTML contenant une table.

XML Le jeu de rsultats est renvoy en XML. Sil est dj en XML,


aucun formatage supplmentaire nest appliqu. Sil ne lest pas dj, il
est automatiquement converti au format XML. Ceci quivaut utiliser la
clause FOR XML RAW dans une instruction SELECT.

SOAP Le jeu de rsultats est renvoy en tant que rponse SOAP. Le


format des donnes est dtermin par la clause FORMAT. Toutes les
demandes mises un service SOAP doivent tre des demandes SOAP
correctesa ; il ne peut pas sagir de simples demandes HTTP. Pour plus
dinformations sur les normes SOAP, consultez le site
www.w3.org/TR/SOAP.

DISH Un service DISH (Determine SOAP Handler) agit en tant que


proxy pour les services SOAP identifis par la clause GROUP, et gnre

414
Chapitre 4. Instructions SQL

un fichier WSDL (Web Services Description Language) pour chaque


service SOAP.

Utilisation Linstruction create service incite le serveur de base de donnes agir en


tant que serveur Web. Une nouvelle entre est cre dans la table systme
SYSWEBSERVICE.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Aucun.
Voir aussi Instruction ALTER SERVICE la page 297, Instruction DROP
SERVICE la page 482
Exemples Pour configurer rapidement un serveur Web, dmarrez un serveur de base de
donnes avec loption -xs, puis excutez linstruction suivante :
CREATE SERVICE tables TYPE XML
AUTHORIZATION OFF
USER DBA
AS SELECT *
FROM SYS.SYSTABLE

Une fois cette instruction excute, utilisez nimporte quel navigateur Web
pour ouvrir lURL http://localhost/tables.
Lexemple suivant montre comment crire un programme Hello World :
CREATE PROCEDURE hello_world_proc
RESULT (html_doc long varchar)
BEGIN
CALL dbo.sa_set_http_header( Content-Type, text/html );
SELECT <html>\n
|| <head><title>Hello World</title></head>\n
|| <body>\n
|| <h1>Hello World!</h1>\n
|| </body>\n
|| </html>\n;
END;
CREATE SERVICE hello_world TYPE RAW
AUTHORIZATION OFF
USER DBA
AS CALL hello_world_proc;

415
Instruction CREATE STATISTICS
Description Cette instruction ne doit tre utilise qu titre exceptionnel. Elle recre
explicitement les statistiques utilises par loptimiseur.
Syntaxe CREATE STATISTICS nom_table [ ( liste_colonnes, . . . ) ]

Utilisation Cette instruction recre les statistiques quAdaptive Server Anywhere utilise
pour optimiser les requtes dans la base de donnes. Ces statistiques
analysent la rpartition des donnes dans la base pour la table dsigne. Le
processus dexcution de CREATE STATISTICS consiste en un balayage
squentiel de la table entire.
Exceptionnellement, lorsque vos requtes de base de donnes varient
fortement, que la distribution des donnes nest pas uniforme ou que les
donnes changent frquemment, vous pouvez amliorer les performances en
excutant CREATE STATISTICS sur une table ou une colonne. Un balayage
squentiel est alors effectu, laide dun index si possible, sur la table ou la
colonne.
CREATE STATISTICS crase les statistiques existantes. Il nest donc pas
ncessaire de les supprimer avant dexcuter cette instruction.
CREATE STATISTICS cre des histogrammes pour la table indique, quelle
que soit sa taille (par dfaut, des histogrammes sont crs pour les tables
contenant au minimum cinq lignes).
Vous pouvez galement crer des statistiques au moyen de linstruction
LOAD TABLE.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Les plans dexcution des requtes changeront probablement.
Voir aussi Instruction DROP STATISTICS la page 484
Instruction ALTER DATABASE la page 275
Instruction LOAD TABLE la page 563
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

416
Chapitre 4. Instructions SQL

Instruction CREATE SUBSCRIPTION [SQL


Remote]
Description Servez-vous de cette instruction pour crer une souscription une
publication pour un utilisateur.
Syntaxe CREATE SUBSCRIPTION
TO nom_publication [ ( valeur_souscription ) ]
FOR id_souscripteur

nom_publication : identificateur

valeur_souscription, id_souscripteur : chane

id_souscripteur : chane

Utilisation Dans une installation SQL Remote, les donnes sont organises en
publications pour la rplication. Afin quelle puisse recevoir des messages
SQL Remote, une subscription doit tre cre pour un ID utilisateur
dtenant lautorisation REMOTE.
Si une chane est fournie dans la souscription, elle est mise en
correspondance avec chaque expression SUBSCRIBE BY de la publication.
Le souscripteur reoit toutes les lignes pour lesquelles la valeur de
lexpression est identique la chane fournie.
Dans SQL Remote, les publications et les souscriptions ont une relation
bidirectionnelle. Si vous crez une souscription une publication pour un
utilisateur distant sur une base de donnes consolide, vous devez galement
crer une souscription pour la base de donnes consolide partir de la base
de donnes distante. Lutilitaire dextraction effectue cette opration
automatiquement.
Paramtres nom_publication Nom de la publication laquelle lutilisateur souscrit.
Peut inclure le propritaire de cette publication.
valeur_souscription Cette chane est compare lexpression de
souscription de la publication. Le souscripteur reoit toutes les lignes o
lexpression de souscription correspond la valeur de souscription.
id_souscripteur ID utilisateur du souscripteur la publication Cet
utilisateur doit bnficier dautorisations REMOTE.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Commit automatique.
Voir aussi Instruction DROP SUBSCRIPTION [SQL Remote] la page 485

417
Instruction GRANT REMOTE [SQL Remote] la page 532
Instruction SYNCHRONIZE SUBSCRIPTION [SQL Remote] la
page 671
Instruction START SUBSCRIPTION [SQL Remote] la page 660
Procdure sp_subscription [SQL Remote - Guide de lutilisateur, page 471]
Exemple Linstruction ci-aprs cre une souscription pour lutilisateur p_chin la
publication pub_sales. Le souscripteur reoit toutes les lignes o
lexpression de souscription a la valeur Eastern.
CREATE SUBSCRIPTION
TO pub_sales ( Eastern )
FOR p_chin

418
Chapitre 4. Instructions SQL

Instruction CREATE SYNCHRONIZATION


SUBSCRIPTION [MobiLink]
Description Dans une base de donnes distante Adaptive Server Anywhere, cette
instruction permet dabonner un utilisateur MobiLink une publication.
Syntaxe CREATE SYNCHRONIZATION SUBSCRIPTION
TO nom_publication
[ FOR nom_utilisateur_ml, . . . ]
[ TYPE type_protocole ]
[ ADDRESS options_protocole ]
[ OPTION option=valeur , . . . ]

nom_utilisateur_ml : identificateur

type_protocole : http | https | https_fips | tcpip | ActiveSync

options_protocole : chane

valeur : chane | entier

Paramtres Clause TO Spcifie le nom dune publication.


Clause FOR Spcifie un ou plusieurs noms dutilisateur MobiLink.
nom_utilisateur_ml identifie une base de donnes distante. Ce nom doit tre
unique.
Pour plus dinformations sur les noms dutilisateur de synchronisation,
reportez-vous la section Prsentation des utilisateurs MobiLink [Clients
MobiLink, page 10].

Omettez la clause FOR pour dfinir le type de protocole, les options de


protocole et les options tendues dune publication.
Pour plus dinformations sur le traitement par dbmlsync des options
dfinies en plusieurs emplacements, reportez-vous la section Ordre de
priorit des options tendues et des paramtres de connexion [Clients
MobiLink, page 82].

Clause TYPE Spcifie le protocole rseau utiliser pour la


synchronisation. Le protocole par dfaut est tcpip.
Pour plus dinformations sur les protocoles rseau, reportez-vous la
section Option tendue CommunicationType (ctp) [Clients MobiLink,
page 124].

Clause ADDRESS Spcifie les options de protocole rseau, comme


lemplacement du serveur de synchronisation MobiLink. Pour spcifier

419
plusieurs options, celles-ci doivent tre spares par des points-virgules.
Pour obtenir la liste complte des options de protocole, reportez-vous
la section Option tendue CommunicationAddress (adr) [Clients MobiLink,
page 120].

Clause OPTION Permet de dfinir des options tendues pour la


souscription. Si aucune clause FOR nest spcifie, les options tendues font
office de paramtres par dfaut pour la publication et sont remplaces par un
jeu doptions tendues associ lutilisateur dune synchronisation.
Pour plus dinformations sur le traitement par dbmlsync des options
dfinies en plusieurs emplacements, reportez-vous la section Ordre de
priorit des options tendues et des paramtres de connexion [Clients
MobiLink, page 82].

Pour obtenir la liste complte des options, reportez-vous la section


Options tendues dblmsync [Clients MobiLink, page 118].
Utilisation Crer une souscription de synchronisation au sein dune base de donnes
MobiLink distante ou de rfrence.
Autorisations Vous devez dtenir les droits DBA. Laccs exclusif toutes les tables
rfrences dans la publication est requis.
Effets secondaires Commit automatique.
Voir aussi Instruction CREATE PUBLICATION la page 402
Instruction CREATE SYNCHRONIZATION USER [MobiLink] la
page 422
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Exemples Crez une souscription par dfaut, qui comporte des valeurs de souscription
par dfaut, pour la publication de vente (en omettant la clause FOR).
Indiquez ladresse du serveur de synchronisation MobiLink et spcifiez que
seul le certificat dorigine Certicom est valable.
CREATE SYNCHRONIZATION SUBSCRIPTION
TO sales_publication
ADDRESS host=test.internal;port=2439;
security=ecc_tls
OPTION memory=2m;

Abonnez lutilisateur MobiLink ml_user1 la publication de vente.


Dfinissez loption de mmoire 3 Mo, et non la valeur spcifie dans la
publication par dfaut.

420
Chapitre 4. Instructions SQL

CREATE SYNCHRONIZATION SUBSCRIPTION


TO sales_publication
FOR ml_user1
OPTION memory=3m;

421
Instruction CREATE SYNCHRONIZATION USER
[MobiLink]
Description Crer un utilisateur de synchronisation dans une base de donnes distante
Adaptive Server Anywhere.
Syntaxe CREATE SYNCHRONIZATION USER nom_utilisateur_ml
[ TYPE type_protocole ]
[ ADDRESS options_protocole ]
[ OPTION option=valeur , . . . ]

nom_utilisateur_ml : identificateur

type_protocole : tcpip | http | https | https_fips | ActiveSync

options_protocole : chane

valeur : chane | entier

Paramtres nom_utilisateur_ml Nom identifiant une base de donnes distante. Ce


nom doit tre unique.
Pour plus dinformations sur les noms dutilisateur de synchronisation,
reportez-vous la section Prsentation des utilisateurs MobiLink [Clients
MobiLink, page 10].

Clause TYPE Spcifie le protocole de communication utiliser pour la


synchronisation. Les options sont tcpip, http, https, https_fips et
ActiveSync. Le protocole par dfaut est tcpip.
Pour plus dinformations sur les protocoles de communication,
reportez-vous la section Option tendue CommunicationType (ctp)
[Clients MobiLink, page 124].

Clause ADDRESS Spcifie options_protocole sous la forme de paires


mot-cl =valeur, spares par des points-virgules. Les paramtres fournir
dpendent du protocole de communication utilis (TCP/IP, HTTP, HTTPS
ou ActiveSync).
Pour obtenir la liste complte des options de protocole, reportez-vous
la section Option tendue CommunicationAddress (adr) [Clients MobiLink,
page 120].

Clause OPTION La clause OPTION vous permet de dfinir des options


tendues laide dune liste de paires option=valeur spares par des
virgules.
Les valeurs de chaque option ne peuvent pas contenir les caractres : ni

422
Chapitre 4. Instructions SQL

=. Le serveur de base de donnes accepte toute option que vous saisissez


sans en vrifier la validit. Par consquent, si vous orthographiez mal une
option ou saisissez une valeur incorrecte, aucun message derreur ne
saffiche jusqu ce que vous excutiez la commande dbmlsync pour
effectuer la synchronisation.
Les options dfinies pour lutilisateur dune synchronisation peuvent tre
remplaces dans chaque souscription ou sur la ligne de commande de
dbmlsync.
Pour plus dinformations sur les options tendues, reportez-vous la
section Options tendues dblmsync [Clients MobiLink, page 118].
Description Les paramtres type_protocole, options_protocole et options peuvent tre
dfinis plusieurs endroits.
Pour plus dinformations sur le traitement par dbmlsync des options
dfinies en plusieurs emplacements, reportez-vous la section Ordre de
priorit des options tendues et des paramtres de connexion [Clients
MobiLink, page 82].
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Commit automatique.
Voir aussi Instruction ALTER SYNCHRONIZATION USER [MobiLink] la
page 303
Instruction CREATE SYNCHRONIZATION SUBSCRIPTION
[MobiLink] la page 419
Instruction CREATE PUBLICATION la page 402
Scurit de la couche de transport MobiLink [MobiLink - Guide
dadministration, page 177]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.
Sybase Prise en charge par Open Client/Open Server.
Exemples Lexemple ci-aprs cre lutilisateur SSinger, qui effectue une
synchronisation par lintermdiaire dune connexion TCP/IP au serveur
mlserver.mycompany.com en utilisant le mot de passe Sam. Lutilisation
dun mot de passe dans la dfinition de lutilisateur nest pas scurise.
CREATE SYNCHRONIZATION USER SSinger
TYPE http
ADDRESS host=mlserver.mycompany.com
OPTION MobiLinkPwd=Sam

Lexemple ci-aprs cre un utilisateur de synchronisation appel factory014


qui fait en sorte que dbmlsync se dtache et soit synchronis avec le TCP/IP

423
crypt par Certicom - cette opration est effectue une heure allatoire,
mais intervient rgulirement toutes les 8 heures. Le caractre alatoire
permet dviter des dgradations en termes de performances, lies des
synchronisations multiples simultanes.
CREATE SYNCHRONIZATION USER factory014
TYPE tcpip
ADDRESS host=mycompany.manufacturing.mobilink1;security=certico
m_tls(certificate=mycompany_mobilink.crt;certificate_
password=thepassword)
OPTION Schedule=EVERY:08:00

Lexemple ci-aprs cre un utilisateur de synchronisation appel sales5322,


qui sera utilis pour la synchronisation avec HTTP. Le serveur de
synchronisation MobiLink fonctionne derrire un pare-feu dentreprise, et
les demandes de synchronization sont rediriges vers lui laide du
Redirecteur (un proxy inverse vers un serveur Web NSAPI).
CREATE SYNCHRONIZATION USER sales5322
TYPE https
ADDRESS host=www.mycompany.com;port=80;url_
suffix=mlredirect/ml/

424
Chapitre 4. Instructions SQL

Instruction CREATE TABLE


Description Crer une table dans la base de donnes et, facultativement, crer une table
sur un serveur distant.
Syntaxe CREATE [ GLOBAL TEMPORARY ] TABLE [ propritaire.]nom_table
( { dfinition_colonne | contrainte_table | %_libre }, . . . )
[ { IN | ON } nom_dbspace ]
[ ON COMMIT { DELETE | PRESERVE } ROWS
| NOT TRANSACTIONAL]
[ AT chane_emplacement ]

dfinition_colonne :
nom_colonne type_donnes [ [ NOT ] NULL ]
[ DEFAULT valeur_par_dfaut ] [ contrainte_colonne . . . ]

valeur_par_dfaut :
valeur_spciale
| chane
| variable globale
| [ - ] nombre
| ( expression_constante )
| fonction_intgre( expression_constante )
| AUTOINCREMENT
| CURRENT DATABASE
| CURRENT REMOTE USER
| CURRENT UTC TIMESTAMP
| GLOBAL AUTOINCREMENT [ ( taille_partition ) ]
| NULL
| TIMESTAMP
| UTC TIMESTAMP
| LAST USER
valeur_spciale :
CURRENT { DATE | TIME | TIMESTAMP
| UTC TIMESTAMP | USER | PUBLISHER }
| USER
contrainte_colonne :
[ CONSTRAINT nom_contrainte ] {
UNIQUE
| PRIMARY KEY [ CLUSTERED ]
| REFERENCES nom_table
[ ( nom_colonne ) ] [ actions ] [ CLUSTERED ]
}
| [ CONSTRAINT nom_contrainte ] CHECK ( condition )
| COMPUTE ( expression )

425
contrainte_table :
[ CONSTRAINT nom_contrainte ] {
UNIQUE ( nom_colonne, . . . )
| PRIMARY KEY [ CLUSTERED ] ( nom_colonne, . . . )
| CHECK ( condition )
| contrainte_cl_trangre
}

contrainte_cl_trangre :
[ NOT NULL ] FOREIGN KEY [ nom_rle ] [ (nom_colonne, . . . ) ]
REFERENCES nom_table [ (nom_colonne, . . . ) ] [ CLUSTERED ]
[ actions ] [ CHECK ON COMMIT ]

action :
ON { UPDATE | DELETE }
. . .{ CASCADE | SET NULL | SET DEFAULT | RESTRICT }

chane_emplacement :
nom_serveur_distant.[nom_db].[propritaire].nom_objet
| nom_serveur_distant;[ nom_db];[ propritaire];nom_objet

%_libre : PCTFREE pourcentage_espace_libre

pourcentage_espace_libre : entier

Paramtres Clause IN La clause IN indique dans quel dbspace la table doit tre cre.
Pour une table TEMPORAIRE GLOBALE, la clause IN est ignore.
Pour plus dinformations sur les dbspaces, reportez-vous la section
Instruction CREATE DBSPACE la page 357.
Clause ON COMMIT La clause ON COMMIT est utilise uniquement pour
les tables temporaires. Par dfaut, les lignes dune table temporaire sont
supprimes lexcution dun COMMIT.
NOT TRANSACTIONAL La clause NOT TRANSACTIONAL est utilise
uniquement pour les tables temporaires. Une table cre avec NOT
TRANSACTIONAL nest affecte ni par COMMIT, ni par ROLLBACK.
La clause NOT TRANSACTIONAL offre des amliorations en matire de
performances dans certaines circonstances car les oprations effectues sur
les tables temporaires non transactionnelles nentranent pas la cration
dentres dans le journal des annulations. Par exemple, NOT
TRANSACTIONAL peut savrer utile si des procdures utilisant la table
temporaire sont appeles de faon rpte sans lintervention daucun
COMMIT ni ROLLBACK.
Clause AT Permet de crer une table distante sur un serveur diffrent
spcifi par chane_emplacement, ainsi quune table Proxy sur la base de

426
Chapitre 4. Instructions SQL

donnes courante qui correspond la table distante. La clause AT accepte le


point-virgule ( ;) comme dlimiteur. Sinon, un point sert de dlimiteur de
champ. Cela permet dutiliser des noms de fichier et des extensions dans les
champs base de donnes et propritaire.
Par exemple, linstruction suivante met en correspondance la table a1 avec le
fichier MS Access mydbfile.mdb :
CREATE TABLE a1
AT access;d:\mydbfile.mdb;;a1

Pour plus dinformations sur les serveurs distants, reportez-vous la


section Instruction CREATE SERVER la page 409. Pour plus
dinformations sur les tables Proxy, reportez-vous aux sections Instruction
CREATE EXISTING TABLE la page 371 et Spcification de
lemplacement dune table Proxy [ASA - Guide de lutilisateur SQL, page 660].
Les dfinitions de cl trangre sont ignores sur les tables distantes. De
mme que sur des tables locales qui font rfrence des tables distantes. Les
dfinitions de cl primaire sont envoyes au serveur distant si le serveur le
permet.
La clause COMPUTE nest pas supporte pour les tables distantes et sera
donc ignore.
dfinition_colonne Dfinit une colonne dans la table. Les lments
ci-aprs font partie des dfinitions de colonne.
nom_colonne Le nom de colonne est un identificateur. Deux colonnes
de la mme table ne peuvent pas porter le mme nom. Pour plus
dinformations, reportez-vous la section Identificateurs la page 8.

type_donnes Pour plus dinformations sur les types de donnes,


reportez-vous la section Types de donnes SQL la page 55.
NOT NULL Si NOT NULL est spcifi ou si la colonne est dans une
contrainte UNIQUE ou PRIMARY KEY, la colonne ne peut contenir
aucune valeur NULL.

DEFAULT Pour plus dinformations sur la valeur_spciale,


reportez-vous la section Valeurs spciales la page 35.
Si une valeur par dfaut (DEFAULT) est spcifie, elle sert de valeur pour
la colonne dans toute instruction INSERT ne spcifiant pas de valeur pour
la colonne. Ne spcifier aucune valeur par dfaut (DEFAULT) revient
spcifier DEFAULT NULL.
Certaines des valeurs par dfaut doivent tre explicites :

427
AUTOINCREMENT Lorsque vous utilisez AUTOINCREMENT, la
colonne doit tre du type de donnes entier ou dun type numrique
exact.
Lorsque vous effectuez des insertions dans la table, si aucune valeur
nest spcifie pour la colonne AUTOINCREMENT, une valeur unique
est gnre. Si une instruction INSERT spcifie une valeur pour la
colonne, celle-ci est utilise ; si la valeur spcifie est suprieure la
valeur maximale courante pour la colonne, elle est utilise comme
point de dpart pour les insertions suivantes.
La suppression de lignes ne dcrmente pas le compteur
dauto-incrmentation. Vous ne pouvez remplir les vides crs par la
suppression de lignes que par des affectations explicites lors dune
insertion. Aprs linsertion explicite dun nombre de lignes infrieur au
nombre maximal, les lignes suivantes sans affectation explicite sont
incrmentes automatiquement dune valeur suprieure dune unit au
nombre maximal prcdent.
La valeur suivante utiliser pour chaque colonne est enregistre sous
la forme dun entier. Lutilisation de valeurs suprieures (231 1)
peut provoquer un blocage des valeurs incorrectes, et
AUTOINCREMENT ne doit alors pas tre utilis.
Vous pouvez trouver la valeur de colonne la plus rcente en inspectant
la variable globale @@identity.
La colonne identity constitue une solution alternative compatible
Transact-SQL lutilisation de la valeur par dfaut de
AUTOINCREMENT. Dans Adaptive Server Anywhere, la colonne
didentit est mise en oeuvre comme valeur par dfaut pour
AUTOINCREMENT. Pour plus dinformations, reportez-vous la
section Colonne spciale IDENTITY [ASA - Guide de lutilisateur SQL,
page 527].
GLOBAL AUTOINCREMENT Cette valeur par dfaut est destine
une utilisation impliquant plusieurs bases de donnes dans un
environnement de rplication SQL Remote ou de synchronisation
Mobilink.
Elle est similaire AUTOINCREMENT, si ce nest que le domaine est
partitionn. Chaque partition contient le mme nombre de valeurs.
Vous affectez chaque copie de la base de donnes un numro
didentification unique. Adaptive Server Anywhere ne fournit les
valeurs par dfaut dune une base de donnes qu partir de la partition
identifie de manire unique par le numro de cette base de donnes.
La taille de la partition peut tre indique entre parenthses juste aprs
le mot-cl AUTOINCREMENT. Cette valeur peut tre un entier
positif, bien que la taille de la partition soit gnralement choisie pour
viter totalement (ou presque) la saturation.

428
Chapitre 4. Instructions SQL

Si la colonne est de type BIGINT ou UNSIGNED BIGINT, la taille de


la partition par dfaut est gale 232 = 4 294 967 296 ; pour tous les
autres types de colonne, la taille de la partition par dfaut est gale
216 = 65 536. Ces valeurs par dfaut peuvent tre inappropries,
notamment si la colonne nest pas de type INT ni BIGINT ; par
consquent, il vaut mieux spcifier la taille de la partition de manire
explicite.
Pour pouvoir utiliser cette valeur par dfaut, il faut dfinir la valeur de
loption publique Global_database_id dans chaque base de donnes
comme un entier non ngatif unique. Cette valeur identifie de faon
unique la base et indique partir de quelle partition doivent tre
affectes les valeurs par dfaut. La fourchette de valeurs utilise est n p
+ 1 en (n + 1) p, o n reprsente la valeur de loption publique
Global_database_id et p la taille de la partition. Par exemple, si la
taille de la partition est 1000 et que Global_database_id est rgle sur
3, la fourchette stend de 3001 4000.
Si la valeur prcdente est infrieure (n + 1) p, la valeur par dfaut
suivante est incrmente dune valeur par rapport la prcdente plus
grande valeur dans la colonne. Si la colonne ne contient aucune valeur,
la premire valeur par dfaut est n p + 1. Les valeurs de colonne par
dfaut ne sont pas dfinies par des valeurs de la colonne situe
lextrieur de la partition courante, cest--dire par des nombres
infrieurs pn + 1 ou suprieurs p (n + 1). La prsence de telles
valeurs peut sexpliquer si elles ont t rpliques partir dune autre
base de donnes via la synchronisation MobiLink.
Etant donn que loption publique Global_database_id ne peut pas
tre dfinie des valeurs ngatives, les valeurs slectionnes sont
toujours positives. Le numro didentification le plus lev nest limit
que par le type de donnes de la colonne et par la taille de la partition.
Si loption publique Global_database_id est dfinie avec la valeur par
dfaut 2147483647, une valeur null est insre dans la colonne. Si les
valeurs NULL ne sont pas autorises, cette tentative dinsertion de la
ligne gnre une erreur. Cest ce qui se produit, par exemple, lorsque la
colonne se trouve dans la cl primaire de la table.
Les valeurs null par dfaut sont galement gnres lorsque la partition
est sature (il nest plus possible de fournir des valeurs). Dans ce cas, il
faut assigner la base une nouvelle valeur Global_database_id pour
permettre le choix de valeurs par dfaut dans une autre partition. Si
vous essayez de saisir une valeur null, une erreur peut tre gnre si la
colonne naccepte pas les valeurs null. Pour dtecter que la partition
est presque sature et pour grer cette condition, crez un vnement
du type GlobalAutoincrement.
Vous ne pouvez pas spcifier DEFAULT GLOBAL

429
AUTOINCREMENT sur des bases de donnes cres avec la version 6
ou une version ultrieure du logiciel, mme si elles ont t mises
niveau.
Expressions constantes Les expressions constantes qui ne font pas
rfrence aux objets de base de donnes sont autorises dans une
clause DEFAULT ; ainsi, vous pouvez utiliser des fonctions telles que
GETDATE ou DATEADD. Si lexpression nest ni une fonction ni une
valeur simple, elle doit figurer entre parenthses.
TIMESTAMP Reprsente un moyen dindiquer quelle date/heure a
t modifie le plus rcemment chaque ligne dune table. Lorsquune
colonne est dclare avec DEFAULT TIMESTAMP, une valeur par
dfaut est fournie pour les insertions, et la valeur est actualise avec la
date et lheure courantes ds mise jour de la ligne.
Pour fournir une valeur par dfaut lors de linsertion, sans mettre jour
la colonne ds la mise jour de la ligne, prfrez DEFAULT
CURRENT TIMESTAMP DEFAULT TIMESTAMP.
Pour plus dinformations sur les colonnes timestamp,
reportez-vous la section Colonne et type de donnes timestamp
spciaux de Transact-SQL [ASA - Guide de lutilisateur SQL, page 525].
Les colonnes dclares avec DEFAULT TIMESTAMP contiennent des
valeurs uniques pour permettre aux applications de dtecter des mises
jour quasi simultanes sur la mme ligne. Si la valeur timestamp
actuelle est identique la valeur la plus rcente, elle est incrmente de
la valeur de loption DEFAULT_TIMESTAMP_INCREMENT.
Pour plus dinformations, reportez-vous la section Option
DEFAULT_TIMESTAMP_INCREMENT [base de donnes] [ASA -
Guide dadministration, page 708].
Dans Adaptive Server Anywhere, vous pouvez automatiquement
tronquer des valeurs en fonction de loption
DEFAULT_TIMESTAMP_INCREMENT. Cette fonctionnalit permet
dassurer la compatibilit avec dautres logiciels de base de donnes
qui enregistrent des valeurs TIMESTAMP moins prcises.
Pour plus dinformations, reportez-vous la section Option
TRUNCATE_TIMESTAMP_VALUES [base de donnes] [ASA -
Guide dadministration, page 759].
La variable globale @@dbts renvoie une valeur TIMESTAMP
reprsentant la dernire valeur gnre pour une colonne laide de
DEFAULT TIMESTAMP. Pour plus dinformations, reportez-vous la
section Variables globales la page 42.
chane Pour plus dinformations, reportez-vous la section
Chanes la page 10.

430
Chapitre 4. Instructions SQL

variable_globale Pour plus dinformations, reportez-vous la


section Variables globales la page 42.

contrainte_colonne Une contrainte de colonne limite les valeurs que


peut contenir la colonne.
contrainte_table Une contrainte de table limite les valeurs que peuvent
contenir un ou plusieurs colonnes de la table.
Contraintes Les contraintes de table et de colonne aident assurer
lintgrit des donnes dans la base. Si une instruction risque dentraner la
violation dune contrainte, son excution ne se termine pas, les modifications
apportes par linstruction avant dtection de lerreur sont annules et une
erreur est signale. Les contraintes de colonne sont des abrviations des
contraintes de table correspondantes.

Par exemple, les instructions suivantes sont quivalentes :


CREATE TABLE Product (
product_num INTEGER UNIQUE
)
CREATE TABLE Product (
product_num INTEGER,
UNIQUE ( product_num )
)

Les contraintes de colonne sont utilises normalement, sauf si la contrainte


fait rfrence plusieurs colonnes de la table. Dans ces cas, vous devez
utiliser une contrainte de table.
Ces contraintes sont les suivantes :

CHECK Permet la vrification des conditions arbitraires. Par exemple,


une contrainte de vrification permet de sassurer quune colonne appele
Sex ne contient que les valeurs Homme ou Femme.
Aucune ligne dune table nest autorise violer une contrainte. Si une
instruction INSERT ou UPDATE provoque la violation dune contrainte,
lopration nest pas autorise et les effets de linstruction sont annuls.
La modification est rejete uniquement si une condition de contrainte
prend la valeur FALSE, et elle est accepte si une condition de contrainte
prend la valeur TRUE ou UNKNOWN.
Pour plus dinformations sur les conditions TRUE, FALSE et
UNKNOWN, reportez-vous aux sections Valeur NULL la page 52 et
Conditions de recherche la page 24.
COMPUTE La contrainte COMPUTE porte uniquement sur les
colonnes. Lorsquune colonne est cre avec une clause COMPUTE, sa

431
valeur dans les lignes est la valeur de lexpression fournie. Les colonnes
cres avec une telle contrainte sont en lecture seule pour les applications
: la valeur est modifie par le serveur de base de donnes lors de
lvaluation de lexpression.
Si une instruction UPDATE tente de modifier la valeur dune colonne
value, les triggers associs la colonne se dclenchent.
UNIQUE Identifie une ou plusieurs colonnes qui identifient de manire
unique chaque ligne dune table. Deux lignes dune table ne peuvent pas
avoir les mmes valeurs dans toutes les colonnes nommes. Une table
peut avoir plusieurs contraintes dunicit.
Il existe une diffrence entre une contrainte dunicit et un index unique.
Les colonnes dun index unique peuvent avoir la valeur NULL,
contrairement aux colonnes dune contrainte dunicit. Une cl trangre
peut rfrencer une cl primaire ou une colonne comportant une
contrainte dunicit, mais pas un index unique, car elle peut comprendre
plusieurs instances de valeurs NULL.
Pour plus dinformations sur les index uniques, reportez-vous la
section Instruction CREATE INDEX la page 383.
PRIMARY KEY Identique une contrainte dunicit, si ce nest quune
table ne peut avoir quune seule contrainte de cl primaire. La cl
primaire reprsente gnralement le meilleur identificateur dune ligne.
Par exemple, le numro de client peut tre la cl primaire de la table
clients.
Les colonnes incluses dans les cls primaires ne peuvent pas autoriser la
valeur NULL. Chaque ligne de la table contient une valeur unique de cl
primaire. Une table ne peut avoir quune seule cl primaire (PRIMARY
KEY).
Lordre des colonnes dans une cl primaire est celui dans lequel les
colonnes ont t cres dans la table, et non celui dans lequel elles ont t
rpertories la cration de la cl primaire.
Pour plus dinformations sur loption CLUSTERED et les index
clusteriss, reportez-vous la section Utilisation dindex clusteriss
[ASA - Guide de lutilisateur SQL, page 68].

Cl trangre Une contrainte de cl trangre peut tre mise en oeuvre


laide dune contrainte de colonne REFERENCES (une seule colonne
uniquement) ou dune contrainte de table FOREIGN KEY. Ce type de
contrainte soumet les valeurs dun jeu de colonnes des restrictions afin
quelles correspondent aux valeurs dune cl primaire ou, plus rarement,
aux valeurs dune contrainte dunicit dune autre table (primary table).
Par exemple, une contrainte de cl trangre permet de sassurer quun

432
Chapitre 4. Instructions SQL

numro de client dune table de factures correspond un numro de


client dans une table de clients.
Le nom dune colonne (nom_colonne ) dans une colonne REFERENCES
doit correspondre une colonne de la table primaire soumise une
contrainte dunicit ou une contrainte de cl primaire, et cette contrainte
doit tre compose uniquement de cette colonne-l. En labsence de
spcification de nom_colonne, la cl trangre rfrence la cl primaire
de la table primaire.
Pour plus dinformations sur loption CLUSTERED et les index
clusteriss, reportez-vous la section Utilisation dindex clusteriss
[ASA - Guide de lutilisateur SQL, page 68].
Toute colonne cl trangre ntant pas explicitement dfinie est
automatiquement cre avec le mme type de donnes que la colonne
correspondante de la table primaire. Ces colonnes automatiquement
cres ne peuvent pas faire partie de la cl primaire de la table trangre.
Ainsi, une colonne utilise dans une cl primaire et dans une cl
trangre de la mme table doit tre cre explicitement.
Si les noms de colonne de la cl trangre sont spcifis, les noms de
colonne de la cl primaire doivent galement tre spcifis ; les noms de
colonne sont associs deux par deux en fonction de leur position dans les
listes. Si les noms de colonne de la table primaire ne sont pas spcifis
dans une contrainte de table FOREIGN KEY, les colonnes de cette table
sont utilises. Si les noms de colonne de la cl trangre ne sont pas
spcifis, les colonnes de la cl trangre ont les mmes noms que les
colonnes de la table primaire.
Si au moins une valeur dune cl trangre plusieurs colonnes est
NULL, il nexiste pas de restriction sur les valeurs pouvant tre
conserves dans dautres colonnes de la cl.
La cl trangre dune table temporaire ne peut pas faire rfrence une
table sous-jacente et la cl trangre dune table sous-jacente ne peut pas
faire rfrence une table temporaire.
NOT NULL Nautorise pas la valeur NULL dans les colonnes cl
trangre. La valeur NULL dans une cl trangre signifie quaucune
ligne de la table primaire ne correspond cette ligne dans la table
trangre.
nom_rle Le nom_rle est le nom de la cl trangre. La fonction
principale du nom de rle est de distinguer deux cls trangres sur la
mme table. Si aucun nom de rle nest spcifi, le nom de rle est
affect comme suit :
1. Sil nexiste pas de cl trangre avec un nom de rle identique
celui de la table, le nom de la table est affect comme nom de rle.

433
2. Si le nom de la table existe dj, le nom de rle est le nom de la
table concatn avec un nombre trois chiffres complt par des
zros ; ce nom est unique pour la table.

action Laction dintgrit rfrentielle dfinit laction mener pour


maintenir des relations de cl trangre dans la base de donnes. Ds
quune valeur de cl primaire est modifie ou supprime dans la table de
base de donnes, des valeurs de cl trangre correspondantes dans
dautres tables peuvent galement ncessiter une modification. Vous
pouvez spcifier une clause ON UPDATE, une clause ON DELETE ou
les deux, suivies de lune des actions suivantes :
CASCADE Utilise avec ON UPDATE, elle met jour les cls
trangres correspondantes de sorte quelles correspondent la valeur
de la nouvelle cl primaire. Utilise avec ON DELETE, elle supprime
les lignes de la table trangre correspondant la cl primaire
supprime.
SET NULL Attribue la valeur NULL toutes les valeurs de cls
trangres correspondant la cl primaire mise jour ou supprime.
SET DEFAULT Attribue les valeurs spcifies dans la clause
DEFAULT de chaque colonne cl trangre aux valeurs de cl
trangre qui correspondent la cl primaire mise jour ou supprime.
RESTRICT Gnre une erreur en cas de tentative de mise jour ou de
suppression de la valeur dune cl primaire alors quil existe des cls
trangres correspondantes ailleurs dans la base de donnes. Il sagit
de laction par dfaut.
CHECK ON COMMIT La clause CHECK ON COMMIT remplace
loption de base de donnes WAIT_FOR_COMMIT et force le serveur de
base de donnes attendre un COMMIT avant de vrifier les actions
RESTRICT sur une cl trangre. La clause CHECK ON COMMIT ne
diffre pas les actions CASCADE, SET NULL ou SET DEFAULT.
Si vous utilisez CHECK ON COMMIT sans prciser daction,
RESTRICT est impliqu en tant quaction pour UPDATE et DELETE.
PCTFREE Spcifie le pourcentage despace libre que vous souhaitez
rserver pour chaque page de table. Lespace libre est utilis dans le cas o la
taille des lignes augmente lorsque les donnes sont mises jour. Si une page
de table ne contient pas despace libre, chaque fois que la taille dune ligne
augmente sur cette page, la ligne est divise sur plusieurs pages de table, ce
qui peut entraner une fragmentation de la ligne et ventuellement une
dgradation des performances.
La valeur pourcentage_espace_libre est un entier compris entre 0 et 100. La
valeur 100 indique quil ne doit pas rester despace libre sur chaque

434
Chapitre 4. Instructions SQL

page-chacune doit tre totalement pleine. Une valeur leve signifie que
chaque ligne insre remplit une page elle toute seule. Si PCTFREE nest
pas dfini, 200 octets sont rservs dans chaque page.
La valeur de PCTFREE est stocke dans la table systme SYSATTRIBUTE.
Pour plus dinformations, reportez-vous la section Table systme
SYSATTRIBUTE la page 712.
Utilisation Linstruction CREATE TABLE cre une table. Vous pouvez crer une table
pour un autre utilisateur en spcifiant le nom du propritaire. Si GLOBAL
TEMPORARY est indiqu, la table est temporaire. Sinon, il sagit dune
table sous-jacente.
Une table temporaire existe dans la base de donnes au mme titre quune
table sous-jacente ; elle reste dans la base de donnes jusqu ce quelle soit
explicitement supprime par une instruction DROP TABLE. Les lignes
dune table temporaire ne sont visibles que par la connexion qui les a
insres. Plusieurs connexions de la mme application ou dapplications
diffrentes peuvent utiliser la mme table temporaire au mme moment,
chaque connexion ne voyant que ses propres lignes. Les lignes dune table
temporaire sont supprimes la fin de la connexion.
Autorisations Droits RESOURCE requis.
Vous devez dtenir les droits DBA pour pouvoir crer une table pour un
autre utilisateur.
La clause AT permettant de crer des tables Proxy nest pas supporte par
Windows CE.
Effets secondaires Commit automatique.
Voir aussi Instruction ALTER TABLE la page 305
Instruction CREATE DBSPACE la page 357
Instruction CREATE EXISTING TABLE la page 371
Instruction DECLARE LOCAL TEMPORARY TABLE la page 463
Instruction DROP la page 474
Valeurs spciales la page 35
Types de donnes SQL la page 55
Cration de tables [ASA - Guide de lutilisateur SQL, page 43]
Option ALLOW_NULLS_BY_DEFAULT [compatibilit] [ASA - Guide
dadministration, page 690]

Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.


SQL/99 Fonction principale.
Les lments suivants sont des extensions du propritaire :
La clause { IN | ON } nom_dbspace.

435
La clause ON COMMIT
Certaines valeurs par dfaut.
Sybase Supporte par Adaptive Server Enterprise, avec certaines
diffrences.
Tables temporaires Vous pouvez crer une table temporaire en
faisant prcder son nom du symbole # dans linstruction CREATE
TABLE. Dans Adaptive Server Anywhere, il sagit dune table
temporaire qui nest valable que pour la connexion courante. Pour plus
dinformations, reportez-vous la section Instruction DECLARE
LOCAL TEMPORARY TABLE la page 463.
Placement physique Le placement physique dune table est ralis
de faon diffrente dans Adaptive Server Anywhere et dans Adaptive
Server Enterprise. La clause ON nom_segment, prise en charge par
Adaptive Server Enterprise, lest galement par Adaptive Server
Anywhere, mais largument nom_segment fait rfrence un dbspace.
Contraintes Adaptive Server Anywhere ne supporte pas les
contraintes et les valeurs par dfaut nommes, mais il supporte les
domaines, ce qui permet dintgrer de tels lments dans la dfinition
dun type de donnes utilisateur. Il accepte galement les valeurs par
dfaut et les conditions CHECK explicites dans une instruction
CREATE TABLE.
NULL par dfaut A linverse des colonnes Adaptive Server
Anywhere, qui sont dotes par dfaut de lattribut NULL, les colonnes
Adaptive Server Enterprise sont dotes par dfaut de lattribut NOT
NULL. Ce paramtre est contrl via loption de base de donnes
ALLOW_NULLS_BY_DEFAULT. Vous devez spcifier de faon
explicite NULL ou NOT NULL pour pouvoir transfrer vos
instructions de dfinition de donnes entre Adaptive Server Anywhere
et Adaptive Server Enterprise.
Pour plus dinformations, reportez-vous la section Option
ALLOW_NULLS_BY_DEFAULT [compatibilit] [ASA - Guide
dadministration, page 690].
Exemple Lexemple suivant cr une table pour une base de donnes de bibliothque
devant contenir les informations relatives aux livres :
CREATE TABLE library_books (
-- NOT NULL is assumed for primary key columns
isbn CHAR(20) PRIMARY KEY,
copyright_date DATE,
title CHAR(100),
author CHAR(50),
-- column(s) corresponding to primary key of room
-- are created automatically
FOREIGN KEY location REFERENCES room
)

436
Chapitre 4. Instructions SQL

Lexemple suivant cre une table pour une base de donnes de bibliothque
devant contenir les informations relatives aux livres emprunts : La valeur
par dfaut de date_borrowed indique que le livre est emprunt le jour de
cration de lentre. La colonne date_returned indique NULL jusquau
retour du livre.
CREATE TABLE borrowed_book (
date_borrowed DATE NOT NULL DEFAULT CURRENT DATE,
date_returned DATE,
book CHAR(20)
REFERENCES library_books (isbn),
-- The check condition is UNKNOWN until
-- the book is returned, which is allowed
CHECK( date_returned >= date_borrowed )
)

Lexemple suivant cre des tables pour une base de donnes de ventes devant
contenir les informations sur les commandes et sur les articles commands :
CREATE TABLE Orders (
order_num INTEGER NOT NULL PRIMARY KEY,
date_ordered DATE,
name CHAR(80)
);
CREATE TABLE Order_item (
order_num INTEGER NOT NULL,
item_num SMALLINT NOT NULL,
PRIMARY KEY (order_num, item_num),
-- When an order is deleted, delete all of its
-- items.
FOREIGN KEY (order_num)
REFERENCES Orders (order_num)
ON DELETE CASCADE
)

Lexemple suivant cre une table nomme t1 sur le serveur distant


SERVER_A et cre une table Proxy nomme t1, mappe sur la table distante
:
CREATE TABLE t1
( a INT,
b CHAR(10))
AT SERVER_A.db1.joe.t1

437
Instruction CREATE TRIGGER
Description Crer un trigger sur une table.
Syntaxe CREATE TRIGGER nom_trigger heure_trigger { liste_vnements_trigger |
UPDATE OF liste_colonnes }
[ ORDER entier ] ON nom_table
[ REFERENCING [ OLD AS ancien_nom ]
[ NEW AS nouveau_nom ] ]
[ REMOTE AS nom_distant ] ]
[ FOR EACH { ROW | STATEMENT } ]
[ WHEN ( condition_recherche ) ]
instruction_compound

temps_trigger : BEFORE | AFTER | RESOLVE

liste_vnements_trigger : vnement_trigger [ , vnement_trigger ]

vnement_trigger :
DELETE | INSERT | UPDATE
Paramtres Evnements de trigger Les triggers peuvent tre dclenchs par un ou
plusieurs des vnements suivants :
DELETE Appel chaque mise jour dune ligne de la table associe.
INSERT Appel chaque insertion dune nouvelle ligne dans la table
associe au trigger.
UPDATE Appel chaque mise jour dune ligne de la table associe.

UPDATE OF liste-colonnes Appel chaque mise jour dune ligne


de la table associe et chaque modification dune colonne de
liste_colonnes.
Vous pouvez crire un trigger pour chaque vnement traiter ou, si
certaines actions sont partages et dautres dpendent de lvnement, vous
pouvez crer un trigger pour tous les vnements et utiliser une instruction
IF pour distinguer laction qui doit avoir lieu.
Pour plus dinformations, reportez-vous la section Instruction IF la
page 540.
heure_trigger Les triggers de niveau ligne peuvent tre dfinis de faon
sexcuter AVANT ou APRES linsertion, la mise jour ou la suppression.
Les triggers de niveau instruction sexcutent APRES linstruction. Le
moment indiqu par RESOLVE est utilis avec SQL Remote : le trigger se
dclenche uniquement avant une mise jour de niveau ligne ou dune liste
de colonnes.

438
Chapitre 4. Instructions SQL

Les triggers BEFORE UPDATE se dclenchent chaque mise jour


(UPDATE) dune ligne, que la nouvelle valeur diffre ou non de lancienne.
Les triggers AFTER UPDATE se dclenchent uniquement si la nouvelle
valeur est diffrente de lancienne.
Clause FOR EACH Pour dclarer un trigger en tant que trigger de niveau
ligne, utilisez la clause FOR EACH ROW. Pour dclarer un trigger en tant
que trigger de niveau instruction, vous pouvez soit utiliser une clause FOR
EACH STATEMENT, soit omettre la clause FOR EACH. Pour plus de
clart, il est conseill de faire appel la clause FOR EACH STATEMENT si
vous dclarez un trigger de niveau instruction.
Clause ORDER Les triggers de mme type (insertion, mise jour ou
suppression) qui se dclenchent en mme temps (BEFORE, AFTER ou
RESOLVE) peuvent utiliser la clause ORDER pour dterminer lordre dans
lequel ils se dclencheront. Spcifier ORDER 0 quivaut omettre la clause
ORDER.
Clause REFERENCING Les clauses REFERENCING OLD et
REFERENCING NEW vous permettent de faire rfrence aux lignes
insres, supprimes ou mises jour. Pour cette clause, une mise jour
(UPDATE) est traite comme une suppression suivie dune insertion.
Une instruction INSERT prend la clause REFERENCING NEW, qui
reprsente la ligne insre. Il nexiste pas de clause REFERENCING OLD.
Une instruction DELETE prend la clause REFERENCING OLD, qui
reprsente la ligne supprime. Il nexiste pas de clause REFERENCING
NEW.
Une instruction UPDATE prend la clause REFERENCING OLD, qui
reprsente la ligne avant mise jour, ainsi que la clause REFERENCING
NEW, qui reprsente la ligne aprs mise jour.
La signification de REFERENCING OLD et REFERENCING NEW diffre
selon quil sagit dun trigger de niveau ligne ou dun trigger de niveau
instruction. Pour un trigger de niveau ligne, la clause REFERENCING OLD
permet de faire rfrence aux valeurs dune ligne avant une mise jour ou
une suppression ; la clause REFERENCING NEW permet de faire rfrence
aux valeurs insres ou mises jour. Vous pouvez rfrencer les lignes OLD
et NEW dans les triggers BEFORE et AFTER. La clause REFERENCING
NEW vous permet de modifier la nouvelle ligne dans un trigger BEFORE
avant que lopration dinsertion ou de mise jour nait lieu.
La clause REFERENCING REMOTE est utilise avec SQL Remote. Elle
vous permet de faire rfrence aux valeurs de la clause VERIFY dune
instruction UPDATE. Utilisez-la uniquement avec les triggers de listes de

439
colonnes RESOLVE UPDATE ou RESOLVE UPDATE OF.
Clause WHEN La clause WHEN provoque le dclenchement du trigger
uniquement pour les lignes pour lesquelles la condition de recherche est
vraie. La clause WHEN (condition_recherche) ne peut tre utilise quavec
des triggers de niveau ligne.
Utilisation Linstruction CREATE TRIGGER cre un trigger associ une table de la
base de donnes et enregistre ce trigger dans la base.
Un trigger est dclar soit en tant que trigger de niveau ligne, auquel cas il
sexcute avant ou aprs chaque modification de ligne, soit en tant que
trigger de niveau instruction, auquel cas il sexcute la fin de linstruction
de dclenchement.
Autorisations Vous devez dtenir les droits RESOURCE et les autorisations ALTER sur la
table, ou tre le propritaire de la table ou dtenir les droits DBA
(administrateur de la base de donnes). Linstruction CREATE TRIGGER
place un verrou sur la table et requiert ainsi une utilisation exclusive de la
table.
Effets secondaires Commit automatique.
Voir aussi Instruction BEGIN la page 324
Instruction CREATE PROCEDURE la page 390
Instruction CREATE TRIGGER [T-SQL] la page 446
Instruction DROP la page 474
Utilisation des procdures, des triggers et des batchs [ASA - Guide de
lutilisateur SQL, page 701]

Normes et compatibilit SQL/92 Fonctionnalit de module stock de manire permanente.


Certaines clauses sont des extensions de propritaires.

SQL/99 Fonctionnalit de module stock de manire permanente.


Certaines clauses sont des extensions de propritaires.
Sybase Cette syntaxe est diffrente de celle supporte par lAdaptive
Server Enterprise.
Exemple Le premier exemple cre un trigger de niveau ligne. Si un nouveau chef de
service est nomm, mettez jour la colonne manager_id pour les employs
de ce service.

440
Chapitre 4. Instructions SQL

CREATE TRIGGER tr_manager


BEFORE UPDATE OF dept_head_id
ON department
REFERENCING OLD AS old_dept NEW AS new_dept
FOR EACH ROW
BEGIN
UPDATE employee
SET employee.manager_id=new_dept.dept_head_id
WHERE employee.dept_id=old_dept.dept_id
END

Plus complexe, lexemple ci-aprs traite dun trigger de niveau instruction.


Tout dabord, cration dune table comme suit :
CREATE TABLE "DBA"."t0"
(
"id" integer NOT NULL,
"times" timestamp NULL DEFAULT current timestamp,
"remarks" text NULL,
PRIMARY KEY ("id")
)

Ensuite, cration dun trigger de niveau instruction pour cette table :

441
CREATE TRIGGER DBA."insert-st" AFTER INSERT ORDER 4 ON
DBA.t0
REFERENCING NEW AS new_name
FOR EACH STATEMENT
BEGIN
DECLARE @id1 INTEGER;
DECLARE @times1 TIMESTAMP;
DECLARE @remarks1 LONG VARCHAR;

DECLARE @err_notfound EXCEPTION FOR SQLSTATE VALUE 02000;

//declare a cursor for table new_name


DECLARE new1 CURSOR FOR
SELECT ID,times,remarks FROM
new_name;
OPEN new1;
//Open the cursor, and get the value
LoopGetRow:
LOOP
FETCH NEXT new1
INTO @id1, @times1,@remarks1;

IF SQLSTATE = @err_notfound THEN


LEAVE LoopGetRow
END IF;

//print the value or for other use


PRINT (@remarks1);

END LOOP LoopGetRow;


CLOSE new1

END

442
Chapitre 4. Instructions SQL

Instruction CREATE TRIGGER [SQL Remote]


Description Servez-vous de cette instruction pour crer un trigger dans la base de
donnes. Une forme de trigger est conue spcifiquement pour SQL Remote.
Syntaxe CREATE TRIGGER nom_trigger temps_trigger
vnement_trigger , . . .
[ ORDER entier ] ON nom_table
[ REFERENCING [ OLD AS ancien_nom ]
[ NEW AS nouveau_nom ] ]
[ REMOTE AS nom_distant ] ]
[ FOR EACH { ROW | STATEMENT } ]
[ WHEN ( condition_recherche ) ]
[ IF UPDATE ( nom_colonne ) THEN
[ { AND | OR } UPDATE ( nom_colonne ) ] . . . ]
instruction_compound
[ ELSEIF UPDATE ( nom_colonne ) THEN
[ { AND | OR } UPDATE ( nom_colonne ) ] . . .
instruction_compound
END IF ] ]

temps_trigger :
BEFORE | AFTER | RESOLVE
vnement_trigger :
DELETE | INSERT | UPDATE
| UPDATE OF nom_colonne [, nom_colonne, . . .]

Paramtres heure_trigger Les triggers de niveau ligne peuvent tre dfinis de faon
sexcuter AVANT ou APRES linsertion, la mise jour ou la suppression.
Les triggers de niveau instruction sexcutent APRES linstruction. Le
moment indiqu par RESOLVEest utilis avec SQL Remote : le trigger se
dclenche uniquement avant une mise jour de niveau ligne ou dune liste
de colonnes.
Les triggers BEFORE UPDATE se dclenchent chaque mise jour
(UPDATE) dune ligne, que la nouvelle valeur diffre ou non de lancienne.
Les triggers AFTER UPDATE se dclenchent uniquement si la nouvelle
valeur est diffrente de lancienne.
Evnements de trigger Les triggers peuvent tre dclenchs par un ou
plusieurs des vnements suivants :
DELETE Appel chaque mise jour dune ligne de la table associe.
INSERT Appel chaque insertion dune nouvelle ligne dans la table
associe au trigger.

UPDATE Appel chaque mise jour dune ligne de la table associe.

443
UPDATE OF liste-colonnes Appel chaque mise jour dune ligne
de la table associe et chaque modification dune colonne de
liste_colonnes.
Utilisation Tout contexte.
Autorisations Vous devez dtenir le droit RESOURCE et les autorisations ALTER sur la
table ou les droits DBA (administrateur de la base de donnes). Linstruction
CREATE TRIGGER place un verrou sur la table et requiert ainsi une
utilisation exclusive de la table.
Effets secondaires Commit automatique.
Voir aussi Instruction UPDATE la page 683
Description Linstruction CREATE TRIGGER cre un trigger associ une table de la
base de donnes et enregistre ce trigger dans la base.
Les triggers BEFORE UPDATE sont dclenchs chaque mise jour dune
ligne, que la nouvelle valeur soit ou non diffrente de lancienne. Les
triggers AFTER UPDATE en revanche sont dclenchs uniquement si la
nouvelle valeur est diffrente de lancienne.
Triggers de niveau ligne Un trigger est dclar soit en tant que trigger de niveau ligne, auquel cas il
et triggers de niveau sexcute avant ou aprs chaque modification de ligne, soit en tant que
instruction trigger de niveau instruction, auquel cas il sexcute la fin de linstruction
de dclenchement.
Les triggers de niveau ligne peuvent tre dfinis de faon sexcuter
AVANT ou APRES linsertion, la mise jour ou la suppression. Les triggers
de niveau instruction sexcutent APRES linstruction. Le temps du trigger
RESOLVE est utilis avec SQL Remote ; il se dclenche uniquement avant
une mise jour de niveau ligne ou dune liste de colonnes.
Pour dclarer un trigger en tant que trigger de niveau ligne, utilisez la clause
FOR EACH ROW. Pour dclarer un trigger en tant que trigger de niveau
instruction, vous pouvez soit utiliser une clause FOR EACH STATEMENT,
soit omettre la clause FOR EACH. Pour plus de clart, il est conseill de
faire appel la clause FOR EACH STATEMENT si vous dclarez un trigger
de niveau instruction.
Ordre de dclenchement Les triggers de mme type (insertion, mise jour ou suppression) qui se
dclenchent en mme temps (BEFORE, AFTER ou RESOLVE) peuvent
utiliser la clause ORDER pour dterminer lordre dans lequel ils se
dclencheront.
Rfrence aux valeurs Les clauses REFERENCING OLD et REFERENCING NEW vous
supprimes et insres permettent de faire rfrence aux lignes supprimes et insres. Pour cette

444
Chapitre 4. Instructions SQL

clause, une mise jour (UPDATE) est traite comme une suppression suivie
dune insertion.
La clause REFERENCING REMOTE est utilise avec SQL Remote. Elle
vous permet de faire rfrence aux valeurs de la clause VERIFY dune
instruction UPDATE. Utilisez-la uniquement avec les triggers de listes de
colonnes RESOLVE UPDATE ou RESOLVE UPDATE OF.
La signification de REFERENCING OLD et REFERENCING NEW diffre
selon quil sagit dun trigger de niveau ligne ou dun trigger de niveau
instruction. Pour un trigger de niveau ligne, la clause REFERENCING OLD
permet de faire rfrence aux valeurs dune ligne avant une mise jour ou
une suppression ; la clause REFERENCING NEW permet de faire rfrence
aux valeurs insres ou mises jour. Vous pouvez rfrencer les lignes OLD
et NEW dans les triggers BEFORE et AFTER. La clause REFERENCING
NEW vous permet de modifier la nouvelle ligne dans un trigger BEFORE
avant que lopration dinsertion ou de mise jour nait lieu.
Pour les triggers de niveau instruction, les clauses REFERENCING OLD et
REFERENCING NEW se rapportent aux tables temporaires dclares qui
contiennent les anciennes et les nouvelles valeurs des lignes. Les noms par
dfaut de ces tables sont deleted et inserted.
La clause WHEN provoque le dclenchement du trigger uniquement pour
les lignes pour lesquelles la condition de recherche est vraie.
Mise jour des valeurs Les triggers BEFORE UPDATE se dclenchent chaque mise jour
avec la mme valeur (UPDATE) dune ligne, que la nouvelle valeur diffre ou non de lancienne.
Les triggers AFTER UPDATE se dclenchent uniquement si la nouvelle
valeur est diffrente de lancienne.
Exemple Si un nouveau chef de service est nomm, mettez jour la colonne
manager_id pour les employs de ce service.
CREATE TRIGGER
tr_manager BEFORE UPDATE OF dept_head_id ON department
REFERENCING OLD AS old_dept
NEW AS new_dept
FOR EACH ROW
BEGIN
UPDATE employee
SET employee.manager_id=new_dept.dept_head_id
WHERE employee.dept_id=old_dept.dept_id
END

445
Instruction CREATE TRIGGER [T-SQL]
Description Crer un trigger dans la base de donnes afin quil soit compatible avec
Adaptive Server Enterprise.
Syntaxe 1 CREATE TRIGGER [propritaire.]nom_trigger
ON [propritaire.]nom_table
FOR { INSERT, UPDATE, DELETE }
AS liste_instructions
Syntaxe 2 CREATE TRIGGER [propritaire.]nom_trigger
ON [propritaire.]nom_table
FOR {INSERT, UPDATE}
AS
[ IF UPDATE ( nom_colonne )
[ { AND | OR } UPDATE ( nom_colonne ) ] . . . ]
liste_instructions
[ IF UPDATE ( nom_colonne )
[ { AND | OR } UPDATE ( nom_colonne ) ] . . . ]
liste_instructions
Utilisation Les lignes supprimes ou insres sont contenues dans deux tables
temporaires. Dans le format Transact-SQL des triggers, elles sont accessibles
laide des noms de table deleted et inserted, comme dans Adaptive Server
Enterprise. Dans linstruction CREATE TRIGGER de Watcom-SQL, laccs
ces lignes seffectue laide de la clause REFERENCING.
Les noms de trigger doivent tre uniques dans la base de donnes.
Les triggers Transact-SQL sont excuts aprs linstruction de
dclenchement.
Autorisations Vous devez dtenir les droits RESOURCE et les autorisations ALTER sur la
table, ou les droits DBA (administrateur de la base de donnes).
Linstruction CREATE TRIGGER place un verrou sur la table et requiert
ainsi une utilisation exclusive de la table.
Effets secondaires Commit automatique.
Voir aussi Instruction CREATE TRIGGER la page 438
Normes et compatibilit SQL/92 Extension de Transact-SQL.
SQL/92 Extension de Transact-SQL.
Sybase Anywhere prend en charge un sous-ensemble de la syntaxe
dAdaptive Server Enterprise.

446
Chapitre 4. Instructions SQL

Instruction CREATE VARIABLE


Description Crer une variable SQL.
Syntaxe CREATE VARIABLE identificateur type_donnes

Utilisation Linstruction CREATE VARIABLE cre une variable du type de donnes


spcifi. Cette variable contient la valeur NULL jusqu ce quune valeur
diffrente lui soit affecte par linstruction SET.
Il est possible dutiliser une variable dans une expression SQL partout o un
nom de colonne est autoris. Si un nom de colonne existe du mme nom que
la variable, la valeur de la variable est utilise.
Les variables appartiennent la connexion courante et disparaissent lorsque
vous vous dconnectez de la base de donnes ou si vous utilisez linstruction
DROP VARIABLE. Les variables ne sont pas visibles par les autres
connexions. Elles ne sont pas modifies par les instructions COMMIT ou
ROLLBACK.
Les variables sont utiles pour la cration dobjets de texte ou dobjets
binaires volumineux pour les instructions INSERT ou UPDATE partir des
programmes Embedded SQL.
Les variables locales dans les procdures et les triggers sont dclares au
sein dune instruction compose (reportez-vous Utilisation dinstructions
composes [ASA - Guide de lutilisateur SQL, page 728]).
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction BEGIN la page 324
Types de donnes SQL la page 55
Instruction DROP VARIABLE la page 488
Instruction SET la page 635
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Pour un exemple, reportez-vous la section Instruction SET la page 635.

447
Instruction CREATE VIEW
Description Crer une vue dans la base de donnes. Les vues prsentent les donnes sous
un certain angle, qui ne correspond pas ncessairement lordre dans lequel
ces donnes sont enregistres.
Syntaxe CREATE VIEW
[ propritaire.]nom_vue [ ( nom_colonne, . . . ) ]
AS instruction_select
[ WITH CHECK OPTION ]

Paramtres nom_vue Le nom_vue est un identificateur. Le propritaire par dfaut est


lID utilisateur courant.
nom_colonne Les noms spcifis dans la liste des noms de colonne
(nom_colonne ) sont attribus aux colonnes de la vue. Si la liste des noms de
colonne nest pas spcifie, les colonnes de la vue prennent les noms
figurant dans la liste de slection. Les lments de la liste de slection
doivent tre des noms de colonne simple ou des noms dalias (reportez-vous
la section Instruction SELECT la page 627). Tous les lments de la
liste de slection doivent avoir des noms uniques.
Clause AS Linstruction SELECT sur laquelle repose la vue doit
comporter une clause ORDER BY. Elle peut en revanche inclure une clause
GROUP BY et dans certains cas, une opration UNION. Linstruction
SELECT ne doit pas faire rfrence des tables temporaires locales.
Clause WITH CHECK OPTION La clause WITH CHECK OPTION rejette
toute mise jour de la vue ou toute insertion dans celle-ci qui ne rpond pas
aux critres dfinis par linstruction SELECT des vues.
Utilisation Linstruction CREATE VIEW cre une vue avec le nom donn. Vous pouvez
crer une vue pour un autre utilisateur en spcifiant le owner. Vous devez
dtenir les droits DBA pour pouvoir crer une vue pour un autre utilisateur.
Vous pouvez utiliser un nom de vue la place dun nom de table dans les
instructions SELECT, DELETE, UPDATE et INSERT. Notez cependant que
les vues nexistent pas physiquement en tant que tables dans la base de
donnes. Elles sont gnres chaque utilisation. Cette gnration est le
rsultat de linstruction SELECT, spcifie dans linstruction CREATE
VIEW. Il est conseill de qualifier les noms de table utiliss dans une vue
avec lID utilisateur du propritaire de la table. Pour un autre ID utilisateur,
lutilisateur risque de ne pas trouver la table ou dobtenir une autre table que
celle quil cherche.
Une vue ne peut pas tre mise jour si linstruction SELECT dfinissant la
vue contient une clause GROUP BY, une fonction dagrgat ou quelle
implique une opration UNION. La mise jour de la vue entrane la mise

448
Chapitre 4. Instructions SQL

jour des tables sous-jacentes.


Autorisations Vous devez dtenir les droits RESOURCE et lautorisation SELECT sur les
tables dans la dfinition de la vue.
Effets secondaires Commit automatique.
Voir aussi Instruction DROP la page 474
Instruction CREATE TABLE la page 425
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.
SQL/99 Fonction principale.

Sybase Prise en charge par Adaptive Server Enterprise.


Exemple Lexemple ci-aprs cre une vue prsentant les informations sur les
employs de sexe masculin uniquement. Cette vue possde les mmes noms
de colonne que la table sous-jacente.
CREATE VIEW male_employee
AS SELECT *
FROM Employee
WHERE Sex = M

Lexemple suivant cre une vue prsentant les employs et les services
auxquels ils appartiennent :
CREATE VIEW emp_dept
AS SELECT emp_lname, emp_fname, dept_name
FROM Employee JOIN Department
ON Employee.dept_id = Department.dept_id

449
Instruction CREATE WRITEFILE (dconseille)
Description Crer un fichier dcriture destin une base de donnes.

Instruction dconseille
Lutilisation de fichiers dcriture est dconseille.
Syntaxe CREATE WRITEFILE nom_fichier_criture
FOR DATABASE nom_fichier_base [ KEY cl ]
[ LOG OFF | LOG ON [ nom_journal [ MIRROR nom_fichier_miroir ] ] ]

nom_fichier_criture | nom_fichier_base | nom_journal | nom_fichier_


miroir : chane
Utilisation Cre un fichier dcriture de base de donnes avec le nom et les attributs
spcifis.
Les noms de fichiers (nom_fichier_criture, nom_fichier_base,
nom_fichier_trace, nom_fichier_miroir ) sont des chanes contenant des
noms de fichiers systme dexploitation.
Pour plus dinformations sur les chanes, reportez-vous la section
Chanes la page 10.
Si vous ne spcifiez aucun chemin, ou un chemin relatif, le fichier est cr en
fonction du rpertoire de travail du serveur.
Vous ne pouvez pas crer un fichier dcriture pour une base de donnes qui
est charge.
Autorisations Les autorisations requises pour excuter cette instruction sont dfinies via la
ligne de commande du serveur, avec loption -gu. Par dfaut, les droits DBA
sont requis.
Le compte sous lequel le serveur est en cours dexcution doit dtenir une
autorisation dcriture sur les rpertoires o sont crs les fichiers.
Non prise en charge par Windows CE.
Vous devez spcifier une valeur KEY si vous souhaitez crer un fichier
dcriture pour une base de donnes crypte fortement.
Effets secondaires Un fichier systme dexploitation est cr.
Voir aussi Instruction CREATE DATABASE la page 350
Utilitaire de cration dun fichier dcriture (dconseill) [ASA - Guide
dadministration, page 664]
Utilisation des fichiers dcriture (dconseille) [ASA - Guide
dadministration, page 322]

450
Chapitre 4. Instructions SQL

Paramtre de connexion DatabaseKey [DBKEY] [ASA - Guide


dadministration, page 210]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Exemple Linstruction suivante cre un fichier dcriture :
CREATE WRITEFILE c:\\sybase\\my_db.wrt
FOR DATABASE c:\\sybase\\my_db.db
LOG ON e:\\logdrive\\my_db.log

451
Instruction DEALLOCATE
Description Utilisez cette instruction pour librer les ressources associes un curseur.
Syntaxe DEALLOCATE [ CURSOR ] nom_curseur

nom_curseur : identificateur

Utilisation Cette instruction libre la mmoire alloue un curseur, incluant les


lments de donnes, les variables indicateur et la structure proprement dite.
Cette option na aucun effet dans Adaptive Server Anywhere. Elle est
fournie pour assurer la compatibilit avec Adaptive Server Enterprise et
Microsoft SQL Server. Dans Adaptive Server Enterprise, le mot-cl
CURSOR est requis. Dans Microsoft SQL Server, le mot-cl nest pas
autoris. Adaptive Server Anywhere reconnat les deux formes.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction DECLARE CURSOR [ESQL] [SP] la page 456
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Prise en charge par Adaptive Server Enterprise.

452
Chapitre 4. Instructions SQL

Instruction DEALLOCATE DESCRIPTOR [ESQL]


Description Librer la mmoire alloue une zone descripteur SQL.
Syntaxe DEALLOCATE DESCRIPTOR nom_descripteur

nom_descripteur : chane

Utilisation Cette instruction libre la mmoire alloue une zone descripteur, incluant
les lments de donnes, les variables indicateur et la structure proprement
dite.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction ALLOCATE DESCRIPTOR [ESQL] la page 273
Zone descripteur SQL (SQLDA) [ASA - Guide de programmation,
page 195]
Instruction SET DESCRIPTOR [ESQL] la page 642
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.
SQL/99 Fonction principale.
Sybase Prise en charge par Open Client/Open Server.

Exemple Pour un exemple, reportez-vous la section Instruction ALLOCATE


DESCRIPTOR [ESQL] la page 273.

453
Section de dclaration [ESQL]
Description Dclarer des variables htes dans un programme Embedded SQL. Ces
variables servent changer des donnes avec la base.
Syntaxe EXEC SQL BEGIN DECLARE SECTION;
dclarations C
EXEC SQL END DECLARE SECTION;

Utilisation Une section de dclaration est simplement une section contenant des
dclarations de variables C, encadre par les instructions BEGIN DECLARE
SECTION et END DECLARE SECTION. Elle permet au prprocesseur
SQL didentifier les variables C utiliser en tant que variables htes. Seuls
certains types de dclaration C sont admis dans une section de dclaration.
Pour plus dinformations, reportez-vous la section Utilisation des
variables htes [ASA - Guide de programmation, page 166].
Autorisations Aucune.
Voir aussi Instruction BEGIN la page 324
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.
SQL/99 Fonction principale.

Sybase Compatible avec Adaptive Server Enterprise.


Exemple EXEC SQL BEGIN DECLARE SECTION;
char *emp_lname, initials[5];
int dept;
EXEC SQL END DECLARE SECTION;

454
Chapitre 4. Instructions SQL

Instruction DECLARE
Description Dclarer une variable SQL au sein dune instruction compose
(BEGIN . . . END).
Syntaxe DECLARE nom_variable type_donnes

Utilisation Les variables utilises dans le corps de la procdure, du trigger ou du batch


peuvent tre dclares laide de linstruction DECLARE. La variable est
persistante pour la dure dexcution de linstruction compose dans
laquelle elle est dclare.
Le corps dune procdure ou dun trigger Watcom SQL est une instruction
compose et les variables doivent tre dclares immdiatement aprs
linstruction BEGIN. Dans une procdure ou un trigger Transact-SQL, il ny
a aucune restriction de ce type.
Normes et compatibilit SQL/92 Fonctionnalit de module stock de manire permanente.
SQL/99 Fonctionnalit de module stock de manire permanente.
Sybase Prise en charge par Adaptive Server Enterprise.
Pour tre compatible avec Adaptive Server Enterprise, le nom de la
variable doit tre prcd dun signe @.
Dans Adaptive Server Enterprise, une variable dclare dans une
procdure ou dans un trigger existe pour la dure de la procdure ou du
trigger. Dans Adaptive Server Anywhere, une variable dclare dans
une instruction compose nexiste que pendant la dure dexcution de
cette instruction compose (quelle soit dclare dans une instruction
Watcom-SQL ou dans une instruction Transact-SQL).
Exemple Le batch ci-dessous illustre lutilisation de linstruction DECLARE et
affiche un message sur la fentre du serveur.
BEGIN
DECLARE varname CHAR(61);
SET varname = Test name;
MESSAGE varname;
END

455
Instruction DECLARE CURSOR [ESQL] [SP]
Description Dclarer un curseur. Les curseurs sont les principaux moyens utiliss pour
manipuler les rsultats des requtes.
Syntaxe 1 [ESQL] DECLARE nom_curseur
[ UNIQUE ]
[ NO SCROLL
| DYNAMIC SCROLL
| SCROLL
| INSENSITIVE
| SENSITIVE
]
CURSOR FOR
{ instruction_select
| nom_instruction
[ FOR { UPDATE [ concurrence_curseurs ] | READ ONLY } ]
| instruction_call }

Syntaxe 2 [SP] DECLARE nom_curseur


[ NO SCROLL
| DYNAMIC SCROLL
| SCROLL
| INSENSITIVE
| SENSITIVE
]
CURSOR FOR
{ instruction_select
[ FOR { UPDATE [ concurrence_curseurs ] | READ ONLY } ]
| instruction_call
| USING nom_variable }

nom_curseur : identificateur

nom_instruction : identificateur | var_hte

nom_variable : identificateur

concurrence_curseurs :
BY { VALUES | TIMESTAMP | LOCK }

Paramtres UNIQUE Lorsquun curseur est dclar UNIQUE, la requte est contrainte
de renvoyer toutes les colonnes ncessaires pour identifier chaque ligne de
faon unique. Le plus souvent, cela consiste sassurer que toutes les
colonnes de la cl primaire ou dune contrainte de table unique sont
renvoyes. Toutes les colonnes requises qui nont pas t spcifies dans la
requte sont ajoutes dans le jeu de rsultats.

456
Chapitre 4. Instructions SQL

Une instruction DESCRIBE applique un curseur UNIQUE dfinit les


options supplmentaires suivantes dans les variables indicateur :
DT_KEY_COLUMN La colonne fait partie de la cl relative la ligne.
DT_HIDDEN_COLUMN La colonne a t ajoute dans la requte car il
est ncessaire didentifier les lignes de faon unique.
NO SCROLL Un curseur dclar NO SCROLL est limit aux oprations de
recherche FETCH NEXT et FETCH RELATIVE 0.
Etant donn que les lignes ne peuvent pas tre renvoyes une fois que le
curseur les a laisses, il nexiste aucune restriction de sensibilit sur le
curseur. Par consquent, lorsquun curseur NO SCROLL est demand,
Adaptive Server Anywhere fournit le type de curseur le plus efficace, qui
correspond un curseur insensible.
Pour plus dinformations, reportez-vous la section Curseur
sensibilit indfinie [ASA - Guide de programmation, page 41].
DYNAMIC SCROLL DYNAMIC SCROLL est le type de curseur par
dfaut. Les curseurs de type DYNAMIC SCROLL peuvent utiliser tous les
formats de linstruction FETCH.
Lorsquun curseur DYNAMIC SCROLL est demand, Adaptive Server
Anywhere fournit un curseur insensible. Lorsque vous utilisez des curseurs,
il y a toujours un compromis entre efficacit et cohrence. Les curseurs
insensibles procurent dexcellentes performances au dtriment de la
cohrence.
Pour plus dinformations, reportez-vous la section Curseur
sensibilit indfinie [ASA - Guide de programmation, page 41].
SCROLL Un curseur dclar SCROLL peut utiliser tous les formats de
linstruction FETCH. Lorsquun curseur SCROLL est demand, Adaptive
Server Anywhere fournit un curseur tenant compte des valeurs.
Pour plus dinformations, reportez-vous la section Curseur tenant
compte des valeurs [ASA - Guide de programmation, page 42].
Adaptive Server Anywhere doit excuter des curseurs tenant compte des
valeurs afin de garantir lappartenance un jeu de rsultats. Les curseurs
DYNAMIC SCROLL sont plus efficaces et doivent tre utiliss sauf
lorsquun comportement cohrent des curseurs SCROLL est demand.
INSENSITIVE Lappartenance dun curseur dclar INSENSITIVE est
dfinie louverture de celui-ci ; une table temporaire est cre avec une
copie de toutes les lignes dorigine. Une instruction FETCH portant sur un
curseur INSENSITIVE ne permet pas de voir les effets dune autre

457
instruction INSERT, UPDATE ou DELETE, ou dune autre opration PUT,
UPDATE WHERE CURRENT ou DELETE WHERE CURRENT excute
sur un autre curseur. Elle permet de voir les effets des oprations PUT,
UPDATE WHERE CURRENT, DELETE WHERE CURRENT portant sur
le mme curseur.
Pour plus dinformations, reportez-vous la section Curseur
insensible [ASA - Guide de programmation, page 38].
SENSITIVE Un curseur dclar SENSITIVE tient compte des
modifications apportes lappartenance ou aux valeurs du jeu de rsultat.
Pour plus dinformations, reportez-vous la section Curseur sensible [ASA
- Guide de programmation, page 39].

nom_instruction FOR Les instructions sont dsignes laide de


linstruction PREPARE. Les curseurs ne peuvent tre dclars que pour une
instruction SELECT ou CALL qui a t prpare.
FOR UPDATE | READ ONLY Un curseur dclar FOR READ ONLY ne
peut pas tre utilis dans une opration UPDATE (positionne) ou DELETE
(positionne). FOR UPDATE est le paramtre par dfaut.
En rponse une demande de curseur qui spcifie FOR UPDATE, Adaptive
Server Anywhere fournit soit un curseur qui tient compte des valeurs, soit un
curseur insensible. Les curseurs insensibles ne peuvent pas tre mis jour.
nom_variable USING Uniquement utilis dans les procdures stockes. La
variable est une chane contenant une instruction SELECT pour le curseur.
La variable doit tre disponible lors du traitement de DECLARE, de mme
que les lments suivants :

Un paramtre pour la procdure. Par exemple :


create function get_row_count(in qry long varchar)
returns int
begin
declare crsr cursor using qry;
declare rowcnt int;

set rowcnt = 0;
open crsr;
lp: loop
fetch crsr;
if SQLCODE <> 0 then leave lp end if;
set rowcnt = rowcnt + 1;
end loop;
return rowcnt;
end

Imbriqu dans un autre BEGIN... END aprs affectation dune valeur la

458
Chapitre 4. Instructions SQL

variable. Par exemple :


create procedure get_table_name(
in id_value int, out tabname char(128)
)
begin
declare qry long varchar;

set qry = select table_name from SYS.SYSTABLE ||


where table_id= || string(id_value);
begin
declare crsr cursor using qry;

open crsr;
fetch crsr into tabname;
close crsr;
end
end

Utilisation Linstruction DECLARE CURSOR permet de dclarer un curseur avec le


nom spcifi pour une instruction SELECT ou CALL.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction PREPARE [ESQL] la page 589
Instruction OPEN [ESQL] [SP] la page 579
Instruction EXPLAIN [ESQL] la page 500
Instruction SELECT la page 627
Instruction CALL la page 330
Instruction FOR la page 507
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.

SQL/99 Fonction principale.


Sybase Prise en charge par Open Client/Open Server.
Exemple Lexemple ci-dessous montre comment dclarer un curseur SCROLL en
Embedded SQL.
EXEC SQL DECLARE cur_employee SCROLL CURSOR
FOR SELECT * FROM employee;

Lexemple ci-dessous montre comment dclarer un curseur pour une


instruction Embedded SQL qui a t prpare.
EXEC SQL PREPARE employee_statement
FROM SELECT emp_lname FROM employee;
EXEC SQL DECLARE cur_employee CURSOR
FOR employee_statement;

459
Lexemple ci-dessous illustre lutilisation de curseurs dans une procdure
stocke.
BEGIN
DECLARE cur_employee CURSOR FOR
SELECT emp_lname
FROM employee;
DECLARE name CHAR(40);
OPEN cur_employee;
lp: LOOP
FETCH NEXT cur_employee INTO name;
IF SQLCODE <> 0 THEN LEAVE lp END IF;
...
END LOOP;
CLOSE cur_employee;
END

460
Chapitre 4. Instructions SQL

Instruction DECLARE CURSOR [T-SQL]


Description Dclarer un curseur pour quil soit compatible avec Adaptive Server
Enterprise.
Syntaxe DECLARE nom_curseur
CURSOR FOR instruction_select
[ FOR { READ ONLY | UPDATE } ]

nom_curseur : identificateur

instruction_select : chane

Utilisation Adaptive Server Anywhere supporte la syntaxe DECLARE CURSOR qui


nest pas supporte par Adaptive Server Enterprise. Pour plus dinformations
sur la syntaxe complte de DECLARE CURSOR, reportez-vous la section
Instruction DECLARE CURSOR [ESQL] [SP] la page 456.
Cette section dcrit les points communs entre la syntaxe DECLARE
CURSOR dans Adaptive Server Anywhere et dans Adaptive Server
Enterprise.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction DECLARE CURSOR [ESQL] [SP] la page 456
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme. Les options FOR UPDATE
et FOR READ ONLY sont des extensions Transact-SQL.
SQL/92 Fonction principale. Les options FOR UPDATE et FOR READ
ONLY sont des extensions Transact-SQL.
Sybase Certaines fonctionnalits de linstruction DECLARE CURSOR
dAdaptive Server Enterprise ne sont pas supportes dans Adaptive
Server Anywhere.
Adaptive Server Enterprise supporte les curseurs ouverts pour la mise
jour dune liste de colonnes partir des tables spcifies dans
linstruction_select. Ce nest pas le cas dans Adaptive Server
Anywhere.
Dans le dialecte Watcom-SQL, une instruction DECLARE CURSOR
incluse dans une procdure, dans un trigger ou dans un batch doit
suivre immdiatement le mot-cl BEGIN. Transact-SQL nimpose
aucune restriction de ce type.
Dans Adaptive Server Enterprise, la longvit dun curseur dclar
dans une procdure, dans un trigger ou dans un batch est gale la
dure dexcution de la procdure, du trigger ou du batch concern.

461
Dans Adaptive Server Anywhere, un curseur dclar dans une
instruction compose nexiste que pendant la dure dexcution de
cette instruction compose (quil soit dclar dans une instruction
Watcom-SQL ou dans une instruction Transact-SQL).
Les nom_instruction CURSOR type (UNIQUE, NO SCROLL, etc.) et
CURSOR FOR ne sont pas pris en charge dans Adaptive Server
Anywhere.

462
Chapitre 4. Instructions SQL

Instruction DECLARE LOCAL TEMPORARY TABLE


Description Dclarer une table temporaire locale.
Syntaxe DECLARE LOCAL TEMPORARY TABLE nom_table
( { dfinition_colonne [ contrainte_colonne . . . ] | contrainte_table | %_
libre }, . . . )
[ ON COMMIT { DELETE | PRESERVE } ROWS
| NOT TRANSACTIONAL ]

%_libre : PCTFREE pourcentage_espace_libre

pourcentage_espace_libre : entier

Paramtres ON COMMIT Par dfaut, les lignes dune table temporaire sont supprimes
lexcution dune instruction COMMIT. Vous pouvez utiliser la clause ON
COMMIT pour protger les lignes au cours dun COMMIT.
NOT TRANSACTIONAL Une table cre avec cette clause nest affecte ni
par COMMIT ni par ROLLBACK. Cette clause savre utile si des
procdures utilisant la table temporaire sont appeles de faon rpte sans
lintervention daucun COMMIT ni ROLLBACK.
La clause NOT TRANSACTIONAL offre des amliorations en matire de
performances dans certaines circonstances car les oprations effectues sur
les tables temporaires non transactionnelles nentranent pas la cration
dentres dans le journal des annulations. Par exemple, NOT
TRANSACTIONAL peut savrer utile si des procdures utilisant la table
temporaire sont appeles de faon rpte, sans lintervention daucun
COMMIT ni ROLLBACK.
PCTFREE Spcifie le pourcentage despace libre que vous souhaitez
rserver pour chaque page de table. Lespace libre est utilis dans le cas o la
taille des lignes augmente lorsque les donnes sont mises jour. Si une page
de table ne contient pas despace libre, chaque fois que la taille dune ligne
augmente sur cette page, la ligne est divise sur plusieurs pages de table, ce
qui peut entraner une fragmentation de la ligne et ventuellement une
dgradation des performances.
La valeur pourcentage_espace_libre est un entier compris entre 0 et 100. La
valeur 100 indique quil ne doit pas rester despace libre sur chaque
page-chacune doit tre totalement pleine. Une valeur leve signifie que
chaque ligne insre remplit une page elle toute seule. Si PCTFREE nest
pas dfini, 200 octets sont rservs dans chaque page.
Utilisation Linstruction DECLARE LOCAL TEMPORARY TABLE permet de
dclarer une table temporaire. Pour les dfinitions de dfinition_colonne,
contrainte_colonne et contrainte_table, reportez-vous la section

463
Instruction CREATE TABLE la page 425.
Des tables temporaires locales dclares lintrieur dinstructions
composes existent dans linstruction compose. (Voir Utilisation
dinstructions composes [ASA - Guide de lutilisateur SQL, page 728]). Dans
les autres cas, une table temporaire locale dclare est valable jusqu la fin
de la connexion.
Les lignes dune table temporaire dclare sont supprimes lorsque la table
est explicitement supprime et lorsquelle devient hors de porte. Vous
pouvez galement supprimer explicitement des lignes laide des
instructions TRUNCATE ou DELETE.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction CREATE TABLE la page 425
Utilisation dinstructions composes [ASA - Guide de lutilisateur SQL,
page 728]

Normes et compatibilit SQL/92 Conforme aux spcifications SQL/92.

SQL/99 Fonction principale/SQL extrieure au langage SQL basique.


Sybase Adaptive Server Enterprise ne supporte pas DECLARE
TEMPORARY TABLE.
Exemple Lexemple ci-dessous montre comment dclarer une table temporaire dans
Embedded SQL.
EXEC SQL DECLARE LOCAL TEMPORARY TABLE MyTable (
number INT
);

Lexemple ci-dessous montre comment dclarer une table temporaire dans


une procdure stocke.
BEGIN
DECLARE LOCAL TEMPORARY TABLE TempTab (
number INT
);
...
END

464
Chapitre 4. Instructions SQL

Instruction DELETE
Description Supprimer des lignes de la base de donnes.
Syntaxe DELETE [ FIRST | TOP n ]
[ FROM ] [ propritaire.]nom_table
[ FROM liste_tables ]
[ WHERE condition_recherche ]

Utilisation Linstruction DELETE supprime, dans les tables indiques, les lignes qui
satisfont la condition de recherche. Si aucune clause WHERE nest
spcifie, toutes les lignes de ces tables sont supprimes.
Linstruction DELETE peut tre applique des vues, condition que
linstruction SELECT dfinissant la vue ne compte quune seule colonne
dans sa clause FROM, ne contienne ni clause GROUP BY, ni fonction
dagrgat et ne comporte pas dopration UNION.
La seconde clause FROM (facultative) de linstruction DELETE permet
deffectuer des suppressions de lignes partir de jointures. Si la seconde
clause FROM est prsente, ses lignes sont qualifies par la clause WHERE.
Les lignes sont supprimes de la table dont le nom est indiqu dans la
premire clause FROM.
La deuxime clause FROM peut contenir des expressions de table
arbitraires, telles que des jointures KEY et NATURAL. Pour plus
dinformations sur la clause FROM et les jointures, reportez-vous la
section Clause FROM la page 511.
Linstruction suivante illustre une ambigut potentielle dans les noms de
table lorsquune instruction DELETE comporte deux clauses FROM faisant
appel des alias :
DELETE
FROM table_1
FROM table_1 AS alias_1, table_2 AS alias_2
WHERE ...

La table table_1 est identifie sans alias dans la premire clause FROM,
mais avec un alias dans la seconde. Dans le cas prsent, largument table_1
de la premire clause est identifi par alias_1 dans la seconde (il ny a
quune instance de table_1 dans cette instruction).
Cette formulation constitue une exception la rgle gnrale qui considre,
lorsquune table est identifie avec et sans alias dans la mme instruction,
quil existe deux instances de cette table.
Examinez lexemple suivant :

465
DELETE
FROM table_1
FROM table_1 AS alias_1, table_1 AS alias_2
WHERE ...

Dans ce cas, il y a deux instances de table_1 dans la deuxime clause


FROM. Linstruction choue avec une erreur de syntaxe cause de
lambigut portant sur le point suivant : quelle instance de la table_1 de la
seconde clause FROM correspond la premire instance de table_1 dans la
premire clause FROM.
La suppression dune quantit importante de donnes laide de linstruction
DELETE entrane galement la mise jour des statistiques de colonne.
Autorisations Autorisation DELETE sur la table.
Effets secondaires Aucun.
Voir aussi Instruction TRUNCATE TABLE la page 674
Instruction INSERT la page 551
Instruction INPUT [Interactive SQL] la page 545
Clause FROM la page 511
Normes et compatibilit SQL/92 Compatible avec fonction dentre de gamme. Lutilisation de
plusieurs tables dans la clause FROM est une extension dun propritaire.
SQL/99 Fonction principale. Lutilisation de plusieurs tables dans la
clause FROM est une extension dun propritaire.
Sybase Supporte par Adaptive Server Enterprise, extension
propritaire incluse.
Exemple Suppression de lemploy 105 de la base de donnes :
DELETE
FROM employee
WHERE emp_id = 105

Suppression de toutes les donnes antrieures 2000 de la table fin_data :


DELETE
FROM fin_data
WHERE year < 2000

Supprime toutes les commandes de la table sales_order_items si leur date


de livraison est antrieure 2001-01-01 et quelles font partie de la rgion
Central.
DELETE
FROM sales_order_items
FROM sales_order
WHERE sales_order_items.id = sales_order.id
and ship_date < 2001-01-01 and region =Central

466
Chapitre 4. Instructions SQL

Instruction DELETE (positionne) [ESQL] [SP]


Description Supprimer les donnes situes la position courante dun curseur.
Syntaxe DELETE [ FROM spcif_table ] WHERE CURRENT OF nom_curseur

nom_curseur : identificateur | var_hte

spcif_table : [ propritaire.]nom_alias

propritaire : identificateur

Utilisation Cette version de linstruction DELETE supprime la ligne courante du


curseur spcifi. La ligne courante est dfinie en tant que dernire ligne
extraite du curseur.
La table contenant les lignes supprimer est dtermine comme suit :
Si aucune clause FROM nest incluse, le curseur ne doit pointer que sur
une seule table.
Si le curseur concerne une requte jointe (ce qui inclut les vues contenant
une jointure), la clause FROM doit tre employe. Seule la ligne courante
de la table spcifie est supprime. Les autres tables participant la
jointure demeurent inchanges.

Si une clause FROM est incluse mais quaucun propritaire de table nest
spcifi, la valeur spcif_table est dabord compare aux alias existants :
Sil existe un alias, la valeur spcif_table est identifie avec cet alias.
Si aucun alias na t dfini, la valeur spcif_table doit identifier sans
ambigut le nom dune table appartenant au curseur.
Si une clause FROM est incluse et quun nom de propritaire est spcifi,
la valeur spcif_table doit identifier sans ambigut le nom dune table
appartenant au curseur.

Vous pouvez utiliser linstruction DELETE positionne sur un curseur


ouvert sur une vue condition que celle-ci soit modifiable.

Autorisations Autorisation DELETE sur les tables utilises avec le curseur.


Effets secondaires Aucun.
Voir aussi Instruction UPDATE la page 683
Instruction UPDATE (positionne) [ESQL] [SP] la page 688
Instruction INSERT la page 551
Instruction PUT [ESQL] la page 594

467
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme. La srie de curseurs
pouvant tre mis jour peut contenir des extensions propritaire si
loption ANSI_UPDATE_CONSTRAINTS est dfinie sur OFF.
SQL/99 Fonction principale. La srie de curseurs pouvant tre mis
jour peut contenir des extensions propritaire si loption
ANSI_UPDATE_CONSTRAINTS est rgle sur OFF.
Sybase Lutilisation dEmbedded SQL est supporte par Open
Client/Open Server. Lutilisation des procdures et des triggers nest
supporte que dans Adaptive Server Anywhere.
Exemple Linstruction suivante supprime la ligne courante de la base de donnes :
DELETE
WHERE CURRENT OF cur_employee

468
Chapitre 4. Instructions SQL

Instruction DESCRIBE [ESQL]


Description Obtenir des informations sur les variables htes ncessaires pour stocker les
donnes extraites de la base de donnes ou pour transmettre des donnes
cette base.
Syntaxe DESCRIBE
[ USER TYPES ]
[ ALL | BIND VARIABLES FOR | INPUT | OUTPUT
| SELECT LIST FOR ]
[ LONG NAMES [spcif_nom_long ] | WITH VARIABLE RESULT ]
[ FOR ] { nom_instruction | CURSOR nom_curseur }
INTO nom_sqlda

spcif_nom_long :
OWNER.TABLE.COLUMN | TABLE.COLUMN | COLUMN
nom_instruction : identificateur | var_hte

nom_curseur : curseur dclar

nom_sqlda : identificateur

Paramtres USER TYPES Une instruction DESCRIBE associe la clause USER


TYPES renvoie des informations sur les domaines dune colonne.
Gnralement, une instruction DESCRIBE est excute lorsquune
instruction DESCRIBE pralable renvoie un indicateur du type
DT-HAS_USERTYP_INFO.
Linformation renvoye est la mme que celle de linstruction DESCRIBE,
sans les mots-cls USER TYPES, sauf que le champ sqlname contient le
nom du domaine, au lieu du nom de la colonne.
Si linstruction DESCRIBE utilise la clause LONG NAMES, le champ
sqldata contient cette information.
ALL Permet de dcrire les paramtres INPUT et OUTPUT en adressant
une demande au serveur de base de donnes. Ce procd amliore les
performances. Les donnes dentre (INPUT) sont dfinies en premier dans
la SQLDA, suivies des donnes de sortie (OUTPUT). Le champ sqld
contient le nombre total de variables INPUT et OUTPUT. Le bit
DT_DESCRIBE_INPUT de la variable indicateur est fix 1 pour les
variables INPUT et 0 pour les variables OUTPUT.
INPUT Une variable de liaison est une valeur fournie par lapplication
lorsque la base de donnes excute les instructions. Les variables de liaison
peuvent tre considres comme des paramtres de linstruction.
DESCRIBE INPUT renseigne les champs de la SQLDA avec le nom des

469
variables de liaison. DESCRIBE INPUT insre galement le nombre de
variables de liaison dans le champ sqld de la SQLDA.
DESCRIBE se sert des variables indicateur de la SQLDA pour fournir des
informations supplmentaires. DT_PROCEDURE_IN et
DT_PROCEDURE_OUT sont des bits qui sont fixs 1 dans la variable
indicateur lors de la description dune instruction CALL.
DT_PROCEDURE_IN indique un paramtre IN ou INOUT et
DT_PROCEDURE_OUT, un paramtre INOUT ou OUT. Les colonnes
RESULT mettent blanc les deux bits. Aprs une instruction DESCRIBE
OUTPUT, ces bits peuvent servir distinguer les instructions comportant
des jeux de rsultats (qui doivent faire appel OPEN, FETCH, RESUME
et CLOSE) de celles qui nen ont pas (et qui doivent utiliser EXECUTE).
Linstruction DESCRIBE INPUT nactive les bits DT_PROCEDURE_IN et
DT_PROCEDURE_OUT de manire approprie que si la variable de liaison
est un argument dune instruction CALL ; si cette variable est incluse dans
une expression utilise comme argument dune instruction CALL, ces bits
ne sont pas activs.
OUTPUT Linstruction DESCRIBE OUTPUT dfinit le type et la longueur
des donnes dans la SQLDA pour chaque lment de la liste de slection. Le
champ du nom contient galement un nom pour llment de la liste
SELECT. Si un alias a t spcifi pour un lment, cet alias est utilis. Dans
le cas contraire, le nom est driv de llment de liste de slection : sil
sagit dun simple nom de colonne, ce nom est utilis ; sinon, une
sous-chane de lexpression est employe. DESCRIBE insre galement le
nombre dlments de la liste de slection dans le champ sqld de la SQLDA.
Si linstruction dcrite est une UNION de plusieurs instructions SELECT,
les noms de colonne renvoys pour DESCRIBE OUTPUT sont les mmes
que ceux rsultant de la premire instruction SELECT.
Dans une instruction CALL, linstruction DESCRIBE OUTPUT dfinit le
type, la longueur et le nom des donnes dans la SQLDA pour chaque
paramtre INOUT ou OUT de la procdure. DESCRIBE OUTPUT insre
galement le nombre de paramtres INOUT ou OUT dans le champ sqld de
la SQLDA.
Dans une instruction CALL avec un jeu de rsultats, linstruction
DESCRIBE OUTPUT dfinit le type, la longueur et le nom des donnes
dans la SQLDA pour chaque colonne RESULT de la dfinition de procdure.
DESCRIBE OUTPUT insre galement le nombre de colonnes de rsultat
dans le champ sqld de la SQLDA.
LONG NAMES La clause LONG NAMES est spcifie pour extraire les
noms de colonnes pour une instruction ou un curseur. Sans cette clause, la

470
Chapitre 4. Instructions SQL

longueur des noms de colonne est limite 29 caractres ; avec la clause,


tous les noms sont supports, quelle que soit leur longueur.
Lorsque LONG NAMES est utilise, les noms longs sont placs dans le
champ SQLDATA de la SQLDA, comme pour effectuer une extraction
depuis un curseur. Aucun des autres champs (SQLLEN, SQLTYPE, etc...)
nest renseign. La SQLDA doit tre configure comme FETCH SQLDA :
Elle doit contenir une entre pour chaque colonne et cette entre doit tre de
type chane. Si une variable dindicateur est spcifie, la troncature est
indique de la faon habituelle.
La spcification par dfaut des noms longs est TABLE.COLUMN.
Clause WITH VARIABLE RESULT Cette clause permet de dcrire des
procdures susceptibles de disposer de plusieurs jeux de rsultats, avec un
nombre ou des types de colonnes diffrents.
Si vous utilisez la clause WITH VARIABLE RESULT, le serveur de base de
donnes affecte SQLCOUNT, une fois linstruction DESCRIBE excute,
une des valeurs suivantes :
0 Le jeu de rsultats peut changer : il convient de dcrire lappel de
procdure aprs chaque instruction OPEN.
1 Le jeu de rsultats est fixe : il est inutile de rpter la description.
Pour plus dinformations sur lemploi de la structure SQLDA,
reportez-vous la section Zone descripteur SQL (SQLDA) [ASA - Guide de
programmation, page 195].

Utilisation Linstruction DESCRIBE configure la SQLDA nomme afin quelle dcrive


le paramtre OUTPUT (quivalent SELECT LIST) ou le paramtre
INPUT (quivalent BIND VARIABLES) de linstruction dsigne.
Sil sagit de INPUT, DESCRIBE BIND VARIABLES ne configure pas les
types de donnes dans la SQLDA. Cette opration doit tre effectue par
lapplication. Le mot-cl ALL permet de dcrire les paramtres INPUT et
OUTPUT dans une mme SQLDA.
Si llment spcifi est un nom dinstruction, celui-ci doit avoir t prpar
au pralable laide de linstruction PREPARE avec le mme nom et la
SQLDA doit avoir t alloue (reportez-vous la section Instruction
ALLOCATE DESCRIPTOR [ESQL] la page 273).
Si llment spcifi est un nom de curseur, celui-ci doit avoir t
pralablement dclar et ouvert. Laction par dfaut consiste dcrire le
paramtre OUTPUT. Seules les instructions SELECT et CALL possdent un
paramtre OUTPUT. Pour toute autre instruction ou pour un curseur qui

471
nest pas dynamique, DESCRIBE OUTPUT indique labsence de donnes
en sortie en donnant la valeur zro au champ sqld de la SQLDA.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction ALLOCATE DESCRIPTOR [ESQL] la page 273
Instruction DECLARE CURSOR [ESQL] [SP] la page 456
Instruction OPEN [ESQL] [SP] la page 579
Instruction PREPARE [ESQL] la page 589
Normes et compatibilit SQL/92 Conforme aux spcifications SQL/92. Certaines clauses sont
des extensions de propritaires.

SQL/99 Fonction principale. Certaines clauses sont des extensions de


propritaires.
Sybase Certaines clauses supportes par Open Client/Open Server.

Exemple Lexemple ci-dessous indique comment utiliser linstruction DESCRIBE.


sqlda = alloc_sqlda( 3 );
EXEC SQL DESCRIBE OUTPUT
FOR employee_statement
INTO sqlda;
if( sqlda->sqld > sqlda->sqln ) {
actual_size = sqlda->sqld;
free_sqlda( sqlda );
sqlda = alloc_sqlda( actual_size );
EXEC SQL DESCRIBE OUTPUT
FOR employee_statement
INTO sqlda;
}

472
Chapitre 4. Instructions SQL

Instruction DISCONNECT [ESQL] [Interactive SQL]


Description Utilisez cette instruction pour fermer la connexion courante la base de
donnes.
Syntaxe DISCONNECT [ nom_connexion | CURRENT | ALL ]

nom_connexion : identificateur , chane ou var_hte

Utilisation Linstruction DISCONNECT ferme une connexion au serveur de base de


donnes et libre toutes les ressources associes. Si la connexion concerne
a t nomme dans linstruction CONNECT, son nom peut tre spcifi.
Lemploi du paramtre ALL permet de fermer toutes les connexions de
lapplication tous les environnements de base de donnes. Le paramtre
CURRENT, appliqu par dfaut, ferme la connexion en cours.
Un ROLLBACK implicite est excut sur les connexions fermes de cette
faon.
Pour plus dinformations sur la fermeture des connexions autres que la
connexion en cours, reportez-vous Instruction DROP CONNECTION
la page 477.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction CONNECT [ESQL] [Interactive SQL] la page 344
Instruction SET CONNECTION [Interactive SQL] [ESQL] la
page 641
Normes et compatibilit SQL/92 Fonctionnalit de niveau intermdiaire.

SQL/99 Fonction principale/SQL extrieure au langage SQL basique.


Sybase Prise en charge par Open Client/Open Server.
Exemple Linstruction ci-dessous montre comment utiliser linstruction
DISCONNECT dans Embedded SQL.
EXEC SQL DISCONNECT :conn_name

Linstruction ci-dessous montre comment utiliser linstruction


DISCONNECT partir dInteractive SQL pour fermer toutes les
connexions.
DISCONNECT ALL

473
Instruction DROP
Description Supprimer des objets de la base de donnes.
Syntaxe DROP
{ DATATYPE | DOMAIN } nom_type_donnes
| DBSPACE nom_dbspace
| EVENT nom_vnement
| FUNCTION [ propritaire.]nom_fonction
| INDEX [ [propritaire.]nom_table.]nom_index
| MESSAGE num_msg
| PROCEDURE [ propritaire.]nom_procdure
| TABLE [ propritaire.]nom_table
| TRIGGER [ [ propritaire.]nom_table.]nom_trigger
| VIEW [ propritaire.]nom_vue

Utilisation Linstruction DROP supprime la dfinition de la structure de base de


donnes indique. Si la structure est un dbspace, toutes les tables quelle
contient doivent tre supprimes au pralable. Si la structure est une table,
toutes les donnes de la table sont automatiquement supprimes dans le
cadre du processus DROP. En outre, DROP TABLE supprime tous les index
et toutes les cls de la table.
Lexcution de DROP TABLE, DROP INDEX et DROP DBSPACE nest
pas autorise si linstruction est susceptible de modifier une table en cours
dutilisation par une autre connexion.
Lexcution de DROP PROCEDURE et DROP FUNCTION nest pas
autorise si la procdure ou la fonction concerne est utilise par une autre
connexion.
Lexcution de DROP DATATYPE est empche si le type de donnes
concern est utilis dans une table. Pour pouvoir le supprimer, vous devez
modifier le type de donnes de toutes les colonnes dfinies sur le domaine. Il
est recommand demployer linstruction DROP DOMAIN au lieu de DROP
DATATYPE, car il sagit de la syntaxe utilise dans lavant-projet de la
norme SQL3 de lANSI/ISO.
Autorisations Les utilisateurs qui possdent lobjet ou qui dtiennent les droits DBA
peuvent excuter linstruction DROP.
Pour DROP DBSPACE, vous devez tre le seul connect la base de
donnes.
Un utilisateur dtenant lautorisation ALTER sur la table peut excuter
DROP TRIGGER.
Un utilisateur dtenant lautorisation REFERENCES sur la table peut
excuter DROP INDEX.

474
Chapitre 4. Instructions SQL

Les tables temporaires globales ne peuvent pas tre supprimes tant que tous
les utilisateurs qui les rfrencent ne se sont pas dconnects.
Effets secondaires Commit automatique. Efface les paramtres de longlet Rsultats dans le
volet Rsultats dInteractive SQL. DROP TABLE et DROP INDEX ferment
tous les curseurs de la connexion en cours.
DROP INDEX ne peut pas tre utilis pour supprimer un index sur une table
temporaire locale. Si vous le faites malgr tout, lerreur Lindex est
introuvable est dclenche.
Les tables temporaires locales constituent une exception ; aucun commit
nest effectu lorsquune table de ce type est supprime.
A la suppression dune vue, toutes les procdures et tous les triggers sont
dchargs de la mmoire de sorte que toute procdure ou tout trigger
rfrenant la vue reflte le fait que la vue nexiste pas. Le dchargement et
le chargement des procdures et des triggers peuvent avoir des consquences
sur les performances si vous supprimez et crez rgulirement les vues.
Voir aussi Instruction CREATE DATABASE la page 350
Instruction CREATE DOMAIN la page 360
Instruction CREATE INDEX la page 383
Instruction CREATE FUNCTION la page 376
Instruction CREATE PROCEDURE la page 390
Instruction CREATE TABLE la page 425
Instruction CREATE TRIGGER la page 438
Instruction CREATE VIEW la page 448
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.
SQL/99 Fonction principale.

Sybase Supporte par Adaptive Server Enterprise pour les objets qui
existent dans Adaptive Server Enterprise.
Exemple Suppression de la table department de la base exemple :
DROP TABLE department

Suppression de la vue emp_dept de la base de donnes :


DROP VIEW emp_dept

475
Instruction DROP DATABASE
Description Supprimer tous les fichiers de base de donnes associs la base de donnes.
Syntaxe DROP DATABASE nom_basededonnes [ KEY cl ]

Utilisation Linstruction DROP DATABASE supprime physiquement du disque tous les


fichiers de base de donnes associs. Si le fichier de base de donnes
nexiste pas ou ne prsente pas une condition adapte au dmarrage de la
base de donnes, une erreur est gnre.
DROP DATABASE ne peut pas tre utilise dans une procdure stocke.
Autorisations Les autorisations requises sont dfinies au moyen de loption -gu du serveur
de base de donnes. Par dfaut, les droits DBA sont requis.
La base de donnes supprimer ne doit pas tre en cours dutilisation.
Vous devez spcifier une cl si vous souhaitez supprimer une base de
donnes crypte fortement.
Non prise en charge par Windows CE.
Effets secondaires Outre le fichier de base de donnes sur le disque, cette instruction supprime
le journal de transactions associ ou le miroir de journal de transactions.
Voir aussi Instruction CREATE DATABASE la page 350
Paramtre de connexion DatabaseKey [DBKEY] [ASA - Guide
dadministration, page 210]

Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non prise en charge par Adaptive Server Enterprise.

Exemple Suppression de la base de donnes temp.db, dans le rpertoire C:\temp.


DROP DATABASE c:\temp\temp.db

476
Chapitre 4. Instructions SQL

Instruction DROP CONNECTION


Description Fermer la connexion dun utilisateur spcifique la base de donnes.
Syntaxe DROP CONNECTION id_connexion

Utilisation Linstruction DROP CONNECTION dconnecte un utilisateur en fermant sa


connexion la base de donnes.
Vous pouvez obtenir lid_connexion en utilisant la fonction
connection_property pour demander le numro de connexion. Linstruction
suivante renvoie lID de la connexion active :
SELECT connection_property( number )

Autorisations Vous devez dtenir les droits DBA.


Effets secondaires Aucun.
Voir aussi Instruction CONNECT [ESQL] [Interactive SQL] la page 344
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

Exemple Linstruction suivante ferme la connexion portant lID numro 4 :


DROP CONNECTION 4

477
Instruction DROP EXTERNLOGIN
Description Supprimer un login externe des catalogues dAdaptive Server Anywhere.
Syntaxe DROP EXTERNLOGIN nom_login TO serveur_distant

Paramtres Clause DROP Spcifie le nom de login dutilisateur local.


Clause TO Spcifie le nom du serveur distant. Le nom de login et le mot
de passe de remplacement de lutilisateur local pour ce serveur constituent le
login externe qui sera supprim.
Utilisation DROP EXTERNLOGIN supprime un login externe des catalogues
dAdaptive Server Anywhere.
Autorisations Vous devez tre le propritaire de nom_connexion ou dtenir les droits DBA.
Effets secondaires Commit automatique.
Voir aussi Instruction CREATE EXTERNLOGIN la page 374
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Prise en charge par Open Client/Open Server.

Exemple DROP EXTERNLOGIN DBA TO sybase1

478
Chapitre 4. Instructions SQL

Instruction DROP PUBLICATION


Description Supprimer une publication. Dans MobiLink, une publication identifie les
donnes synchronises dans une base de donnes distante Adaptive Server
Anywhere. Dans SQL Remote, les publications identifient les donnes
rpliques dans les bases de donnes consolides et distantes.
Syntaxe DROP PUBLICATION [ propritaire.]nom_publication

propritaire, nom_publication : identificateur

Utilisation Cette instruction sapplique uniquement MobiLink et SQL Remote.


Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Commit automatique. Toutes les souscriptions la publication sont
supprimes.
Voir aussi Instruction ALTER PUBLICATION la page 290
Instruction CREATE PUBLICATION la page 402
Procdure sp_drop_publication [SQL Remote - Guide de lutilisateur,
page 425]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.

Exemple Linstruction suivante supprime la publication pub_contact :


DROP PUBLICATION pub_contact

479
Instruction DROP REMOTE MESSAGE TYPE [SQL
Remote]
Description Servez-vous de cette instruction pour supprimer une dfinition de type de
message dune base de donnes.
Syntaxe DROP REMOTE MESSAGE TYPE systme_messagerie

systme_messagerie : FILE | FTP | MAPI | SMTP | VIM

Utilisation Cette instruction supprime un type de message dune base de donnes.


Autorisations Vous devez dtenir les droits DBA. Un type de message ne peut tre
supprim que si aucun utilisateur ne dispose des autorisations REMOTE ou
CONSOLIDATE sur ce mme type.
Effets secondaires Commit automatique.
Voir aussi Instruction CREATE REMOTE MESSAGE TYPE [SQL Remote] la
page 405
Procdure sp_drop_remote_type [SQL Remote - Guide de lutilisateur,
page 426]
Utilisation de types de message [SQL Remote - Guide de lutilisateur,
page 229].

Exemple Linstruction suivante supprime le type de message FILE dune base de


donnes :
DROP REMOTE MESSAGE TYPE file

480
Chapitre 4. Instructions SQL

Instruction DROP SERVER


Description Supprimer un login externe des catalogues dAdaptive Server Anywhere.
Syntaxe DROP SERVER nom_serveur

Utilisation DROP SERVER supprime un serveur distant des catalogues dAdaptive


Server Anywhere. Vous devez supprimer toutes les tables Proxy qui ont t
dfinies pour le serveur distant avant de pouvoir utiliser cette instruction.
Autorisations Seul le dtenteur dun compte DBA peut supprimer un serveur distant.
Non prise en charge par Windows CE.
Effets secondaires Commit automatique.
Voir aussi Instruction CREATE SERVER la page 409
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Prise en charge par Open Client/Open Server.

Exemple DROP SERVER ase_prod

481
Instruction DROP SERVICE
Description Cette instruction permet serveur Web dagir en tant que un serveur de base
de donnes.
Syntaxe DROP SERVICE nom_service

Utilisation Cette instruction supprime un service Web.


Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Aucun.
Voir aussi Instruction ALTER SERVICE la page 297, Instruction CREATE
SERVICE la page 412
Exemple Pour supprimer un service Web appel tables, excutez linstruction suivante
:
CREATE SERVICE tables

482
Chapitre 4. Instructions SQL

Instruction DROP STATEMENT [ESQL]


Description Librer les ressources sollicites par linstruction.
Syntaxe DROP STATEMENT [ propritaire.]nom_instruction

nom_instruction : identificateur | var_hte

Utilisation DROP STATEMENT libre les ressources utilises par linstruction


prpare qui est spcifie. Ces ressources sont alloues par une instruction
PREPARE et ne sont normalement libres qu la fermeture de la
connexion la base de donnes.
Autorisations Linstruction doit avoir t prpare.
Effets secondaires Aucun.
Voir aussi Instruction PREPARE [ESQL] la page 589
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non supporte par Open Client/Open Server
Exemple Vous trouverez ci-dessous des exemples dutilisation de linstruction DROP
STATEMENT.
EXEC SQL DROP STATEMENT S1;
EXEC SQL DROP STATEMENT :stmt;

483
Instruction DROP STATISTICS
Description Utilisez cette instruction pour supprimer toutes les statistiques de
loptimiseur sur les colonnes dsignes.
Syntaxe DROP STATISTICS [ ON ] [propritaire.]nom_table [ ( liste_colonnes ) ]

Utilisation Loptimiseur Adaptive Server Anywhere utilise les informations statistiques


pour dcider de la meilleure stratgie adopter pour chaque instruction.
Adaptive Server Anywhere runit automatiquement ces statistiques pour les
actualiser. Ces statistiques sont stockes en permanence dans la base de
donnes, dans la table systme SYSCOLSTAT. Les statistiques runies
pendant le traitement dune instruction sont votre disposition si vous
recherchez une manire efficace dexcuter les instructions suivantes.
Il arrive que les statistiques ne soient plus exactes ou que les statistiques
pertinentes ne soient pas disponibles. Cest une condition susceptible de se
produire lorsquun petit nombre de requtes ont t excutes aprs lajout,
la mise jour ou la suppression dune grande quantit de donnes.
Linstruction DROP STATISTICS supprime de la table systme
SYSCOLSTAT toutes les statistiques internes portant sur les colonnes
dsignes. Cette tape drastique supprime laccs de loptimiseur aux
informations statistiques essentielles. Labsence de ces statistiques risque
damener loptimiseur choisir des plans daccs peu efficaces, ce qui
entrane une rduction des performances de la base de donnes.
Il faut rserver cette instruction la dtermination des problmes ou au
rechargement de donnes trs diffrentes des donnes originales dans une
base.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Commit automatique.
Voir aussi Instruction CREATE STATISTICS la page 416
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

484
Chapitre 4. Instructions SQL

Instruction DROP SUBSCRIPTION [SQL Remote]


Description Servez-vous de cette instruction pour supprimer une souscription une
publication pour un utilisateur.
Syntaxe DROP SUBSCRIPTION TO nom_publication [ ( valeur_souscription ) ]
FOR id_souscripteur , . . .

valeur_souscription : chane

id_souscripteur : chane

Paramtres nom_publication Nom de la publication laquelle lutilisateur souscrit.


Peut inclure le propritaire de cette publication.
valeur_souscription Cette chane est compare lexpression de
souscription de la publication. Cette valeur est requise parce quun
utilisateur peut souscrire plus dune publication.
id_souscripteur ID utilisateur du souscripteur la publication.
Utilisation Supprime, pour lID utilisateur spcifi, une souscription SQL Remote une
publication de la base de donnes courante. Lorsque les donnes de la
publication seront modifies, cet utilisateur ne recevra plus les mises jour.
Dans SQL Remote, les publications et les souscriptions ont une relation
bidirectionnelle. Si vous supprimez une souscription une publication pour
un utilisateur dans une base consolide, vous devez galement la supprimer
dans la base distante afin dviter que cette dernire continue transmettre
les mises jour la base consolide.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Commit automatique.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Adaptive Server Anywhere version 7.0.

Voir aussi Instruction CREATE SUBSCRIPTION [SQL Remote] la page 417


Exemple Linstruction suivante supprime une souscription pour lutilisateur SamS la
publication pub_contact :
DROP SUBSCRIPTION TO pub_contact
FOR SamS

485
Instruction DROP SYNCHRONIZATION
SUBSCRIPTION [MobiLink]
Description Utilisez cette instruction pour supprimer une souscription de synchronisation
au sein dune base de donnes MobiLink distante ou de rfrence. Vous
pouvez galement lutiliser pour supprimer une souscription par dfaut
contenant les valeurs des souscriptions par dfaut pour la publication
spcifie.
Syntaxe DROP SYNCHRONIZATION SUBSCRIPTION
TO nom_publication
[ FOR nom_utilisateur_ml, . . . ]

Paramtres Clause TO Spcifie le nom dune publication.


Clause FOR Spcifie des utilisateurs MobiLink supplmentaires.
En cas domission de cette clause, la souscription par dfaut de la
publication est supprime. Les utilisateurs MobiLink ayant souscrit une
publication hritent, par dfaut, des valeurs de la publication par dfaut.
Utilisation Supprimer une souscription de synchronisation dans une base de donnes
MobiLink distante ou de rfrence.
Autorisations Vous devez dtenir les droits DBA. Laccs exclusif toutes les tables
rfrences dans la publication est requis.
Effets secondaires Commit automatique.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Exemples Annulez la souscription de lutilisateur MobiLink ml_user1 la publication
de vente.
DROP SYNCHRONIZATION SUBSCRIPTION
TO sales_publication
FOR "ml_user1"

Supprimez la souscription par dfaut, qui comporte des valeurs de


souscription par dfaut, pour la publication de vente (en omettant la clause
FOR).
DROP SYNCHRONIZATION SUBSCRIPTION
TO sales_publication

486
Chapitre 4. Instructions SQL

Instruction DROP SYNCHRONIZATION USER


[MobiLink]
Description Supprimer un utilisateur de synchronisation dune base de donnes distante
MobiLink.
Syntaxe DROP SYNCHRONIZATION USER nom_utilisateur_ml, . . .

nom_utilisateur_ml : identificateur

Utilisation Supprimer un ou plusieurs utilisateurs de synchronisation dune base de


donnes distante MobiLink.
Autorisations Vous devez dtenir les droits DBA. Laccs exclusif toutes les tables
rfrences dans la publication est requis.
Effets secondaires Toutes les souscriptions associes lutilisateur sont galement supprimes.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Exemple Supprimez lutilisateur MobiLink ml_user1 de la base de donnes.
DROP SYNCHRONIZATION USER ml_user1

487
Instruction DROP VARIABLE
Description Supprimer une variable SQL.
Syntaxe DROP VARIABLE identificateur

Utilisation Linstruction DROP VARIABLE supprime une variable SQL prcdemment


cre laide de linstruction CREATE VARIABLE. Les variables sont
automatiquement limines la fermeture de la connexion la base de
donnes. Comme elles sont souvent utilises pour stocker des objets
volumineux, leur suppression aprs utilisation ou leur dfinition sur NULL
peut librer des ressources importantes (notamment de lespace disque).
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction CREATE VARIABLE la page 447
Instruction SET la page 635
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

488
Chapitre 4. Instructions SQL

Opration EXCEPT
Description Calcule la diffrence entre les jeux de rsultats dau moins deux requtes.
Syntaxe instruction_select
EXCEPT [ ALL | DISTINCT ] instruction_select
[ EXCEPT [ ALL | DISTINCT ] instruction_select ]
[ ORDER BY [ entier | nom_expression_liste_slection ] [ ASC | DESC ], . . .
]

Utilisation Il est possible dobtenir sous forme de rsultat unique les diffrences entre
les jeux de rsultats de plusieurs instructions SELECT par le biais
dEXCEPT ou dEXCEPT ALL. EXCEPT DISTINCT est identique
EXCEPT.
Les instructions SELECT doivent comporter chacune le mme nombre
dlments dans la liste de slection et ne pas inclure de clause ORDER BY.
Le nombre de lignes contenues dans le jeu de rsultats EXCEPT ALL est
exactement gal la diffrence entre le nombre de lignes dans les jeux de
rsultats des requtes spares.
Les rsultats dEXCEPT sont identiques ceux dEXCEPT ALL, sauf
quavec EXCEPT, les lignes en double sont limines avant le calcul de la
diffrence entre les jeux de rsultats.
Si des lments correspondants dans deux listes de slection sont dots de
types de donnes diffrents, Adaptive Server Anywhere choisit un type de
donnes pour la colonne rsultat correspondante et convertit
automatiquement les colonnes de chaque instruction SELECT de faon
approprie. La premire spcification de requte de lUNION sert
dterminer les noms faire correspondre avec la clause ORDER BY.
Les noms de colonne affichs sont les mmes que ceux qui le seraient pour
la premire instruction SELECT. Une autre faon de personnaliser les noms
de colonne des jeux de rsultats consiste utiliser la clause WITH sur
linstruction SELECT.
Autorisations Vous devez dtenir lautorisation SELECT pour chacune des instructions
SELECT.
Effets secondaires Aucun.
Voir aussi Opration INTERSECT la page 558
Opration UNION la page 676
Normes et compatibilit SQL/92 Entre de gamme.
SQL/99 EXCEPT DISTINCT est une fonction principale. EXCEPT

489
ALL est la fonction F304.
Sybase Prise en charge par Adaptive Server Enterprise.

Exemple Pour des exemples dutilisation dEXCEPT, reportez-vous la section


Oprateurs ensemblistes et NULL [ASA - Guide de lutilisateur SQL,
page 281].

490
Chapitre 4. Instructions SQL

Instruction EXECUTE [ESQL]


Description Excuter une instruction SQL prpare.
Syntaxe 1 EXECUTE instruction
[ USING { liste_var_hte | DESCRIPTOR nom_sqlda } ]
[ INTO { liste_var_hte_cible | DESCRIPTOR nom_sqlda_cible } ]
[ ARRAY :entier ]

instruction : { identificateur | var_hte | chane }

nom_sqlda : identificateur

nom_sqlda_cible : identificateur

Syntaxe 2 EXECUTE IMMEDIATE instruction

instruction : { chane | var_hte }

Paramtres Clause USING Les donnes en sorties (OUTPUT) dune instruction


SELECT ou CALL sont places soit dans les variables de la liste de
variables, soit dans les zones de donnes du programme dcrites par la
SQLDA spcifie. Il existe une correspondance univoque entre, dune part,
les donnes en sortie (OUTPUT) et, dautre part, la liste des variables htes
ou le tableau des descripteurs SQLDA.
Clause INTO Si linstruction EXECUTE est utilise avec un INSERT, la
ligne insre est renvoye dans le second descripteur. Par exemple, lorsque
vous employez des cls primaires auto-incrmentes ou des triggers
BEFORE INSERT gnrant des valeurs de cl primaire, linstruction
EXECUTE offre un mcanisme qui rextrait immdiatement la ligne et
dtermine la valeur de cl primaire affecte cette dernire. Le mme
rsultat peut tre obtenu en utilisant @@identity avec des cls
auto-incrmentes.
Clause ARRAY La clause optionnelle ARRAY peut tre utilise avec des
instructions INSERT prpares pour effectuer des insertions multiligne, ce
qui est susceptible damliorer les performances. La valeur de type entier
reprsente le nombre de lignes insrer. La zone SQLDA doit contenir une
variable pour chaque entre (nombre de lignes * nombre de colonnes). La
premire ligne est place dans les variables SQLDA de 0 (colonnes par
ligne)-1, etc.
Utilisation Linstruction EXECUTE peut tre employe pour toute instruction SQL
susceptible dtre prpare. Des curseurs sont utiliss pour les instructions
SELECT ou CALL qui renvoient plusieurs lignes de la base de donnes
(voir Utilisation de curseurs dans Embedded SQL [ASA - Guide de

491
programmation, page 181]).

Lorsquune instruction INSERT, UPDATE ou DELETE sest termine


correctement, le champ sqlerrd [2 ] de la SQLCA (SQLCOUNT) contient le
nombre des lignes affectes par lopration.
Syntaxe 1 Excute linstruction dynamique spcifie et pralablement
prpare. Si cette instruction contient des marques de rservation pour les
variables htes fournissant les informations sur la requte (variables de
liaison), deux cas se prsentent : soit le paramtre nom_sqlda spcifie une
variable C pointant sur une SQLDA qui contient suffisamment de
descripteurs pour toutes les variables de liaison de linstruction, soit le
paramtre liste_var_hte contient toutes les variables de liaison.
Syntaxe 2 Forme abrge permettant de prparer (PREPARE) et
dexcuter (EXECUTE) une instruction ne contenant ni variables de liaison,
ni donnes en sortie. Linstruction SQL contenue dans la chane ou la
variable hte est immdiatement excute. Elle est supprime en fin
dexcution.
Autorisations Les autorisations sont contrles pour chaque instruction excute.
Effets secondaires Aucun.
Voir aussi Instruction EXECUTE IMMEDIATE [SP] la page 495
Instruction PREPARE [ESQL] la page 589
Instruction DECLARE CURSOR [ESQL] [SP] la page 456
Normes et compatibilit SQL/92 Fonctionnalit de niveau intermdiaire.
SQL/99 Fonctionnalit extrieure au langage SQL basique.
Sybase Supporte par Open Client/Open Server.

Exemple Excution dune instruction DELETE.


EXEC SQL EXECUTE IMMEDIATE
DELETE FROM employee WHERE emp_id = 105;

Excution dune instruction DELETE prpare.


EXEC SQL PREPARE del_stmt FROM
DELETE FROM employee WHERE emp_id = :a;
EXEC SQL EXECUTE del_stmt USING :employee_number;

Excution dune requte prpare.


EXEC SQL PREPARE sel1 FROM
SELECT emp_lname FROM employee WHERE emp_id = :a;
EXEC SQL EXECUTE sel1 USING :employee_number INTO :emp_lname;

492
Chapitre 4. Instructions SQL

Instruction EXECUTE [T-SQL]


Description La syntaxe 1 permet dappeler une procdure comme solution de rechange
compatible Adaptive Server Enterprise pour linstruction CALL. Vous
pouvez galement excuter des instructions au sein des procdures stockes
et des triggers Transact-SQL. Pour plus dinformations, reportez-vous la
section Instruction EXECUTE IMMEDIATE [SP] la page 495. La
syntaxe 2 permet dexcuter une instruction SQL prpare dans
Transact-SQL.
Syntaxe 1 EXECUTE [ @return_status = ] [crateur.]nom_procdure [ argument, . . . ]

argument :
[ @parameter-name = ] expression
| [ @parameter-name = ] @variable [ sortie ]

Syntaxe 2 EXECUTE ( expression_chane )

Utilisation La syntaxe 1 permet dexcuter une procdure stocke. Elle peut


ventuellement fournir des paramtres de procdure, et extraire des
paramtres en sortie et des informations dtat de retour.
Linstruction EXECUTE est mise en oeuvre pour la compatibilit
Transact-SQL mais peut tre utilise dans les batchs et les procdures
Transact-SQL ou Watcom-SQL.
La syntaxe 2 permet dexcuter des instructions au sein des procdures
stockes et des triggers Transact-SQL. Linstruction EXECUTE tend le
nombre des instructions excutables partir de procdures et de triggers.
Elle vous permet dexcuter de faon dynamique des instructions prpares
(comme celles construites en utilisant les paramtres transmis une
procdure). Les chanes littrales de linstruction doivent tre crites entre
guillemets et linstruction doit tenir sur une seule ligne.
Autorisations Vous devez tre le propritaire de la procdure, dtenir lautorisation
EXECUTE pour cette procdure ou les droits DBA (administrateur de la
base de donnes).
Effets secondaires Aucun.
Voir aussi Instruction CALL la page 330
Instruction EXECUTE [ESQL] la page 491
Instruction EXECUTE IMMEDIATE [SP] la page 495
Exemple La procdure suivante illustre la syntaxe 1 :

493
CREATE PROCEDURE p1( @var INTEGER = 54 )
AS
PRINT on input @var = %1!, @var
DECLARE @intvar integer
SELECT @intvar=123
SELECT @var=@intvar
PRINT on exit @var = %1!, @var

Cette instruction permet dexcuter la procdure, en affectant la valeur 23 au


paramtre. Si vous tes connect depuis une application Open Client ou
JDBC, les messages PRINT saffichent dans la fentre client. Si vous tes
connect depuis une application ODBC ou Embedded SQL, les messages
saffichent dans la fentre du serveur de base de donnes.
EXECUTE p1 23

Voici une autre solution, trs utile en prsence de paramtres multiples :


EXECUTE p1 @var = 23

Dans cet exemple, linstruction permet dexcuter la procdure, en gardant


la valeur par dfaut du paramtre :
EXECUTE p1

Linstruction ci-aprs permet dexcuter la procdure et denregistrer la


valeur de retour dans une variable des fins de vrification de ltat renvoy :
EXECUTE @status = p1 23

494
Chapitre 4. Instructions SQL

Instruction EXECUTE IMMEDIATE [SP]


Description Permettre des instructions construites de faon dynamique de sexcuter
depuis une procdure.
Syntaxe 1 EXECUTE IMMEDIATE [ option_excution ] expression_chane

option_excution :
WITH QUOTES [ ON | OFF ]
| WITH ESCAPES { ON | OFF }
| WITH RESULT SET { ON | OFF }

Syntaxe 2 EXECUTE ( expression_chane )

Paramtres WITH QUOTES Lorsque vous spcifiez WITH QUOTES ou WITH


QUOTES ON, les guillemets de lexpression de type chane sont supposs
dlimiter un identificateur. Si vous nindiquez pas WITH QUOTES ou si
vous indiquez WITH QUOTES OFF, le traitement des guillemets dans
lexpression de type chane dpend de la valeur actuelle de loption
QUOTED_IDENTIFIER.
WITH QUOTES est particulirement utile lorsquun nom dobjet transmis
dans la procdure stocke est utilis pour crer linstruction excuter. Il est
alors possible que le nom doive figurer entre guillemets et que la procdure
soit appele lorsque QUOTED_IDENTIFIER est dfini OFF.
Pour plus dinformations, reportez-vous la section Option
QUOTED_IDENTIFIER [compatibilit] [ASA - Guide dadministration,
page 746].

WITH ESCAPES Avec le paramtre WITH ESCAPES OFF, les squences


dchappement (comme \n, \x ou \\) sont ignores dans lexpression chane.
Par exemple, deux barres obliques inverses conscutives sont conserves
telles quelles, au lieu dtre converties en une seule barre oblique inverse. Le
paramtre par dfaut quivaut WITH ESCAPES ON.
WITH ESCAPES OFF facilite notamment lexcution dinstructions
construites de faon dynamique qui font rfrence des noms de fichier
contenant des barres obliques inverses.
Dans certains contextes, les squences dchappement dans
lexpression_chane sont transformes avant lexcution de linstruction
EXECUTE IMMEDIATE. Par exemple, les instructions composes sont
analyses avant dtre excutes et les squences dchappement sont
transformes au cours de cette analyse, quelle que soit la valeur du
paramtre WITH ESCAPES. Dans ces contextes, WITH ESCAPES OFF
empche toute conversion supplmentaire. Exemple :

495
BEGIN
DECLARE String1 LONG VARCHAR;
DECLARE String2 LONG VARCHAR;
EXECUTE IMMEDIATE
SET String1 = One backslash: \\\\ ;
EXECUTE IMMEDIATE WITH ESCAPES OFF
SET String2 = Two backslashes: \\\\ ;
SELECT String1, String2
END

WITH RESULT SET Vous pouvez faire en sorte quune instruction


EXECUTE IMMEDIATE renvoie un jeu de rsultats en spcifiant WITH
RESULT SET ON. Avec cette clause, la procdure contenant linstruction
est marque comme renvoyant un jeu de rsultats. Si cette clause nest pas
incluse, une erreur est signale lorsque la procdure est appele si
linstruction gnre un jeu de rsultats.

Remarque
Loption par dfaut est WITH RESULT SET OFF, ce qui signifie quaucun
jeu de rsultats nest gnr lorsque linstruction est excute.
Utilisation Linstruction EXECUTE tend le nombre des instructions excutables
partir de procdures et de triggers. Elle vous permet dexcuter de faon
dynamique des instructions prpares (comme celles construites en utilisant
les paramtres transmis une procdure).
Les chanes littrales de linstruction doivent tre crites entre guillemets et
linstruction doit tenir sur une seule ligne.
Seules des variables globales peuvent tre rfrences dans une instruction
excute par EXECUTE IMMEDIATE.
Seule la syntaxe 2 peut tre utilise dans les procdures stockes et les
triggers Transact-SQL.
Autorisations Aucune. Linstruction est excute avec les autorisations du propritaire de
la procdure et non avec celles de lutilisateur qui appelle cette procdure.
Effets secondaires Aucun. Toutefois, sil sagit dune instruction de dfinition de donnes ayant
comme effet secondaire une validation automatique, cette validation est
effectue.
Pour plus dinformations sur lutilisation de linstruction EXECUTE
IMMEDIATE dans des procdures, reportez-vous la section Utilisation de
linstruction EXECUTE IMMEDIATE dans les procdures [ASA - Guide de
lutilisateur SQL, page 754].

Voir aussi Instruction CREATE PROCEDURE la page 390


Instruction BEGIN la page 324

496
Chapitre 4. Instructions SQL

Instruction EXECUTE [ESQL] la page 491


Normes et compatibilit SQL/92 Fonctionnalit de niveau intermdiaire.
SQL/99 Fonction principale/SQL extrieure au langage SQL basique.

Sybase Supporte par Open Client/Open Server.


Exemples La procdure ci-aprs cre une table dont le nom est fourni dans un
paramtre. Linstruction EXECUTE IMMEDIATE doit tenir sur une seule
ligne.
CREATE PROCEDURE CreateTableProc(
IN tablename char(30)
)
BEGIN
EXECUTE IMMEDIATE
CREATE TABLE || tablename ||
( column1 INT PRIMARY KEY)
END

Pour appeler la procdure et crer la table mytable, saisissez :


CALL CreateTableProc( mytable )

Pour un exemple dinstruction EXECUTE IMMEDIATE avec une


requte qui renvoie un jeu de rsultats, reportez-vous la section Utilisation
de linstruction EXECUTE IMMEDIATE dans les procdures [ASA - Guide
de lutilisateur SQL, page 754].

497
Instruction EXIT [Interactive SQL]
Description Quitter Interactive SQL.
Syntaxe { EXIT | QUIT | BYE } [ code_retour ]

code_retour : nombre | variable_connexion

Utilisation Cette instruction ferme votre connexion la base de donnes, puis ferme
lenvironnement Interactive SQL. Avant de fermer la connexion la base de
donnes, Interactive SQL excute automatiquement une instruction
COMMIT si loption COMMIT_ON_EXIT est dfinie sur ON. Si loption
est sur OFF, Interactive SQL excute un ROLLBACK implicite. ON est la
valeur par dfaut.
Le code retour facultatif peut tre utilis dans des fichiers batch pour
indiquer la russite ou lchec des commandes dans un fichier de
commandes Interactive SQL. Le code retour par dfaut est 0.
Autorisations Aucune.
Effets secondaires Cette instruction effectue automatiquement une validation si loption
COMMIT_ON_EXIT prend la valeur ON (par dfaut) ; sinon, elle effectue
une annulation implicite.
Sur les systmes dexploitation Windows, la valeur de retour facultative est
disponible en tant quERRORLEVEL.
Voir aussi Instruction SET OPTION la page 644
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non applicable dans Adaptive Server Enterprise.

Exemples Lexemple suivant rgle la valeur de retour Interactive SQL sur 1 si la table
T contient des lignes, ou sur 0 si T ne contient aucune ligne :
CREATE VARIABLE rowCount INT;
CREATE VARIABLE retcode INT;
SELECT COUNT(*) INTO rowCount FROM T;
IF( rowCount > 0 ) THEN
SET retcode = 1;
ELSE
SET retcode = 0;
END IF;
EXIT retcode;

498
Chapitre 4. Instructions SQL

Remarque
Vous ne pouvez pas crire linstruction suivante :
CREATE VARIABLE rowCount INT ; SELECT COUNT(*) INTO rowCount
FROM T ; IF( rowCount > 0 ) THEN EXIT 1 ; // <- not allowed
ELSE EXIT 0 ; // <- not allowed END IF ;

car EXIT correspond une instruction Interactive SQL (et non pas SQL),
or des blocs dinstructions SQL ne peuvent pas contenir des instructions
Interactive SQL.
Le fichier batch Windows suivant affiche Error = 1 sur la ligne de
commande.
dbisql -c "dsn=ASA 9.0 Sample" EXIT 1
if errorlevel 1 echo "Errorlevel is 1"

499
Instruction EXPLAIN [ESQL]
Description Extraire une spcification de texte dcrivant la stratgie doptimisation
utilise pour un curseur particulier.
Syntaxe EXPLAIN PLAN FOR CURSOR nom_curseur
{ INTO var_hte | USING DESCRIPTOR nom_sqlda }

nom_curseur : identificateur ou var_hte

nom_sqlda : identificateur

Utilisation Linstruction EXPLAIN extrait une reprsentation textuelle dcrivant la


stratgie doptimisation relative au curseur spcifi. Le curseur doit avoir t
pralablement dclar et ouvert.
La variable var_hte ou nom_sqlda doit tre de type chane. La chane
doptimisation indique lordre dans lequel les tables sont traites et les index
utiliss pour les recherches (sil existe des index).
Suivant la requte, la chane peut tre longue ; elle a le format suivant :
table (index), table (index), ...

Si la table possde un alias, celui-ci apparat au lieu du nom de table. Lordre


dapparition des noms de table dans la liste dtermine la squence dans
laquelle ces tables seront sollicites par le serveur de base de donnes.
Chaque table est suivie dun nom dindex entre parenthses. Il sagit de
lindex qui sera utilis pour accder la table. Si aucun nom dindex nest
spcifi, il est remplac par les lettres seq et la table est balaye en ordre
squentiel. Si une instruction SQL SELECT particulire comporte des
sous-requtes, les chanes doptimisation des sous-requtes sont spares par
le signe deux-points (:). Ces sections de sous-requte apparaissent dans leur
ordre dexcution par le serveur de base de donnes.
Si linstruction EXPLAIN a russi son excutions, le champ sqlerrd[3] de
la SQLCA (SQLIOESTIMATE) contient une estimation du nombre des
oprations dE/S requises pour extraire toutes les lignes de la requte.
Vous trouverez des exemples de chane doptimisation dans le chapitre
Contrle et amlioration des performances [ASA - Guide de lutilisateur SQL,
page 171].

Autorisations Le curseur spcifi doit tre ouvert.


Effets secondaires Aucun.
Voir aussi Instruction DECLARE CURSOR [ESQL] [SP] la page 456
Instruction PREPARE [ESQL] la page 589

500
Chapitre 4. Instructions SQL

Instruction FETCH [ESQL] [SP] la page 502


Instruction CLOSE [ESQL] [SP] la page 337
Instruction OPEN [ESQL] [SP] la page 579
Utilisation de curseurs dans Embedded SQL [ASA - Guide de
programmation, page 181]
Zone de communication SQL (SQLCA) [ASA - Guide de programmation,
page 174]
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Lexemple suivant illustre lutilisation de linstruction EXPLAIN :
EXEC SQL BEGIN DECLARE SECTION;
char plan[300];
EXEC SQL END DECLARE SECTION;
EXEC SQL DECLARE employee_cursor CURSOR FOR
SELECT emp_id, emp_lname
FROM employee
WHERE emp_lname like :pattern;
EXEC SQL OPEN employee_cursor;
EXEC SQL EXPLAIN PLAN FOR CURSOR employee_cursor INTO :plan;
printf( "Optimization Strategy: %s.n", plan );

La variable de plan contient la chane suivante :


employee <seq>

501
Instruction FETCH [ESQL] [SP]
Description Repositionner un curseur et en extraire des donnes.
Syntaxe FETCH position_curseur nom_curseur
[ INTO { liste_var_hte | liste_variables }
| USING DESCRIPTOR nom_sqlda ]
[ PURGE ]
[ BLOCK n ]
[ FOR UPDATE ]
[ ARRAY nombre_extractions ]
INTO liste_variables [ FOR UPDATE ]

position_curseur :
NEXT | PRIOR | FIRST | LAST
| { ABSOLUTE | RELATIVE } dcompte_lignes

dcompte_lignes : nombre ou var_hte

nom_curseur : identificateur ou var_hte

liste_var_hte : peut contenir des variables indicateur

liste_variables : variables de procdure stocke

nom_sqlda : identificateur

nombre_extractions : entier ou var_hte

Paramtres INTO La clause est facultative. Si elle est omise, linstruction FETCH se
contente de positionner le curseur. La variable liste_var_hte sapplique
Embedded SQL uniquement.
cursor position Vous pouvez, si ncessaire, spcifier un paramtre de
positionnement permettant de dplacer le curseur avant lextraction dune
ligne : si lextraction comprend un paramtre de positionnement et que la
position se trouve lextrieur des positions autorises du curseur,
lavertissement SQLE_NOTFOUND est mis et le champ SQLCOUNT
indique loffset partir dune position correcte.
Par dfaut, linstruction OPEN positionne le curseur avant la premire ligne.
NEXT Il sagit du positionnement par dfaut, et le curseur est avanc
dune ligne avant lextraction de la ligne.
PRIOR Entrane la sauvegarde du curseur sur une ligne avant
lextraction.
RELATIVE Le positionnement relatif (paramtre RELATIVE) permet

502
Chapitre 4. Instructions SQL

de dplacer le curseur du nombre de lignes spcifi dans lune ou lautre


direction. Un nombre positif indique un dplacement vers lavant et un
nombre ngatif, un dplacement vers larrire. Ainsi, NEXT quivaut
RELATIVE 1 et PRIOR, RELATIVE -1. RELATIVE 0 extrait la mme
ligne que la dernire instruction FETCH applique ce curseur.
ABSOLUTE Le positionnement absolu (paramtre ABSOLUTE)
permet daccder une ligne particulire. Un zro indique la position
avant la premire ligne (voir Utilisation de curseurs dans les procdures
et les triggers [ASA - Guide de lutilisateur SQL, page 741]).
Un 1 indique la premire ligne, et ainsi de suite. Les nombres ngatifs
servent indiquer une position absolue partir de la fin du curseur. La
valeur -1 indique la dernire ligne du curseur.
FIRST Forme abrge de ABSOLUTE 1.
LAST Forme abrge de ABSOLUTE -1.

Problmes lis au positionnement du curseur


Les insertions et certaines mises jour apportes aux curseurs DYNAMIC
SCROLL ( dfilement dynamique) peuvent engendrer des problmes de
positionnement. Le serveur ne place les lignes insres dans un curseur
une position prvisible que si linstruction SELECT comporte une clause
ORDER BY. Dans certains cas, la ligne insre napparat pas avant que le
curseur soit ferm puis rouvert.
Cela se produit si une table temporaire a d tre cre pour ouvrir le curseur.
Pour plus dinformations, reportez-vous la section Utilisation de tables
de travail dans le traitement des requtes [ASA - Guide de lutilisateur SQL,
page 208].

Linstruction UPDATE peut provoquer le dplacement dune ligne dans


le curseur. Cela se produit si le curseur inclut une clause ORDER BY qui
utilise un index existant (aucune table temporaire nest cre).
Clause BLOCK Lapplication cliente peut extraire plusieurs lignes la
fois. Cette opration est connue sous le nom dextraction de bloc ou
dextraction multiligne. La premire extraction dclenche le renvoi de
plusieurs lignes depuis le serveur. Le client place ces lignes dans un buffer
et, lors des extractions suivantes, les lignes sont rcupres directement dans
ces buffers sans passer par le serveur.
La clause BLOCK nest utilisable quen Embedded SQL . Elle donne au
client et au serveur une estimation du nombre de lignes que peut extraire
lapplication. La valeur spciale zro (0) signifie que la demande sera
envoye au serveur et quune seule ligne sera renvoye (blocs de lignes non

503
grs). La clause BLOCK rduira alors le nombre de lignes inclure dans la
prlecture suivante en fonction de la valeur BLOCK. Pour augmenter le
nombre de lignes qui doivent faire lobjet dune prlecture, vous pouvez
utiliser le paramtre de connexion PrefetchRows.
En labsence de spcification de la clause BLOCK, la valeur spcifie pour
OPEN est utilise. Pour plus dinformations, reportez-vous la section
Instruction OPEN [ESQL] [SP] la page 579.
FETCH RELATIVE 0 rextrait toujours la ligne.
Clause PURGE La clause PURGE nest utilisable quen Embedded SQL.
Lorsquelle est spcifie, le client vide ses buffers de lignes et envoie la
demande dextraction au serveur. Notez que cette demande peut renvoyer un
bloc de lignes.
Clause FOR UPDATE La clause FOR UPDATE indique que la ligne
extraite sera ultrieurement mise jour laide dune instruction UPDATE
WHERE CURRENT OF CURSOR. Lorsquelle est spcifie, le serveur de
base de donnes pose un verrou en criture sur la ligne. Le verrou est
maintenu jusqu la fin de la transaction courante. Reportez-vous la section
Fonctionnement du verrouillage [ASA - Guide de lutilisateur SQL, page 148].
Clause ARRAY La clause ARRAY nest utilisable quen Embedded SQL.
Elle permet deffectuer des extractions multiligne. Son utilisation est
susceptible damliorer les performances.
Pour effectuer des extractions multiligne en Embedded SQL, vous devez
inclure linstruction FETCH dans votre code comme suit :
EXEC SQL FETCH . . . ARRAY nnn

o ARRAY nnn est le dernier lment de linstruction. Le nombre


dextractions nnn peut tre une variable hte. Le SQLDA doit contenir nnn
* (columns per row) variables. La premire ligne est place dans les
variables SQLDA de 0 to (columns per row)-1, etc.
Pour consulter un exemple dtaill dextraction tendue, reportez-vous
la section Extraction simultane de plusieurs lignes [ASA - Guide de
programmation, page 184].

Utilisation Linstruction FETCH extrait une ligne du curseur spcifi. Le curseur doit
avoir t prcdemment ouvert.
Embedded SQL Linstruction DECLARE CURSOR doit apparatre avant
linstruction FETCH dans le code source en langage C, et linstruction
OPEN doit tre excute avant FETCH. Si une variable hte est utilise pour
le nom du curseur, linstruction DECLARE doit tre excute avant
linstruction FETCH, dans la mesure o elle gnre du code.

504
Chapitre 4. Instructions SQL

Le serveur renvoie dans SQLCOUNT le nombre des enregistrements


extraits ; sil ny a aucune erreur ou avertissement, la valeur renvoye est
toujours suprieure zro. Une valeur SQLCOUNT gale zro sans
condition derreur indique quune ligne a t extraite correctement.
Si lextraction renvoie lavertissement SQLSTATE_NOTFOUND, le champ
sqlerrd [2 ] de la SQLCA (SQLCOUNT) contient le nombre de lignes
dpassant de lintervalle de positions admises du curseur. La valeur est zro
(0) si la ligne est introuvable bien que la position soit correcte. Par exemple,
lexcution de FETCH RELATIVE 1 seffectue lorsque vous tes positionn
sur la dernire ligne dun curseur. La valeur est positive si la tentative
dextraction a t effectue au-del de la dernire position du curseur, et
ngative si elle a t effectue avant le dbut du curseur.
Lorsque linstruction dextraction sest termine correctement, le champ
sqlerrd [1 ] de la SQLCA (SQLIOCOUNT) est incrment du nombre
doprations dE/S ncessaires pour effectuer lextraction. En fait, ce champ
est incrment chaque instruction de base de donnes.
Extraction dune ligne Une seule ligne du rsultat de linstruction
SELECT est place dans les variables de la liste de variables. Il existe une
correspondance univoque entre la liste de slection et la liste de variables
htes.
Extraction multiligne Une ou plusieurs lignes du rsultat de linstruction
SELECT sont places soit dans les variables de la liste_variables, soit dans
les zones de donnes du programme dcrites par nom_sqlda. Dans les deux
cas, il existe une correspondance univoque entre, dune part, la liste de
slection (liste_slection ) et, dautre part, la liste de variables htes
(hostvar-list ) ou le tableau de descripteurs nom_sqlda.
Autorisations Le curseur doit tre ouvert et lutilisateur doit disposer des autorisations
SELECT sur les tables rfrences dans la dclaration du curseur.
Effets secondaires Aucun.
Voir aussi Instruction DECLARE CURSOR [ESQL] [SP] la page 456
Instruction PREPARE [ESQL] la page 589
Instruction OPEN [ESQL] [SP] la page 579
Utilisation de curseurs dans Embedded SQL [ASA - Guide de
programmation, page 181]
Utilisation de curseurs dans les procdures et les triggers [ASA - Guide
de lutilisateur SQL, page 741]
FETCH dans le document PowerScript Reference
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme. Fonctionnalit de module
stock de manire permanente utilise dans les procdures.

505
SQL/99 Fonction principale. Fonctionnalit de module stock de
manire permanente utilise dans les procdures.

Sybase Supporte par Adaptive Server Enterprise.


Exemple Lexemple suivant sapplique au langage Embedded SQL :
EXEC SQL DECLARE cur_employee CURSOR FOR
SELECT emp_id, emp_lname FROM employee;
EXEC SQL OPEN cur_employee;
EXEC SQL FETCH cur_employee
INTO :emp_number, :emp_name:indicator;

Vous trouverez ci-aprs un exemple de procdure :


BEGIN
DECLARE cur_employee CURSOR FOR
SELECT emp_lname
FROM employee;
DECLARE name CHAR(40);
OPEN cur_employee;
LOOP
FETCH NEXT cur_employee into name;
...
END LOOP
CLOSE cur_employee;
END

506
Chapitre 4. Instructions SQL

Instruction FOR
Description Rpter une fois lexcution dune liste dinstructions pour chaque ligne
dun curseur.
Syntaxe [ tiquette_instruction : ]
FOR nom_boucle_for AS nom_curseur
CURSOR FOR instruction
[ FOR UPDATE | FOR READ ONLY ]
DO liste_instructions
END FOR [ tiquette_instruction ]

Utilisation FOR est une instruction de contrle qui permet dexcuter une liste
dinstructions SQL une fois pour chaque ligne dun curseur. Linstruction
FOR quivaut une instruction compose comportant les lments suivants :
une dclaration de curseur et une dclaration de variable pour chaque
colonne du jeu de rsultats de ce curseur, suivies dune boucle qui extrait
une ligne du curseur destination des variables locales et excute
liste_instructions une fois pour chaque ligne du curseur.
Les types de curseur corrects sont les curseurs de dfilement dynamique (par
dfaut), de dfilement, sans dfilement, sensibles et insensibles.
Le nom et le type de donnes de chaque variable locale dpendent de
linstruction utilise dans le curseur. Sil sagit de linstruction SELECT, les
types de donnes sont ceux des expressions de la liste de slection. Si les
lments de la liste comportent des alias, ceux-ci sont employs comme
noms ; dans le cas contraire, les noms des colonnes sont utiliss. Tout
lment de la liste de slection autre quune simple rfrence de colonne doit
possder un alias. Si le curseur comporte linstruction CALL, les noms et les
types de donnes sont extraits de la clause RESULT de la dfinition de
procdure.
Il est possible demployer linstruction LEAVE pour sortir de la boucle et
reprendre lexcution la premire instruction qui suit END FOR. Si vous
spcifiez ltiquette (tiquette_instruction ) de fin, elle doit correspondre
ltiquette de dbut.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction DECLARE CURSOR [ESQL] [SP] la page 456
Instruction FETCH [ESQL] [SP] la page 502
Instruction LEAVE la page 560
Instruction LOOP la page 574
Normes et compatibilit SQL/92 Fonctionnalit de module stock de manire permanente.

507
SQL/99 Fonctionnalit de module stock de manire permanente.
Sybase Non prise en charge par Adaptive Server Enterprise.

Exemple Le fragment de code suivant illustre lemploi de la boucle FOR :


FOR names AS curs CURSOR FOR
SELECT emp_lname
FROM employee
DO
CALL search_for_name( emp_lname );
END FOR;

508
Chapitre 4. Instructions SQL

Instruction FORWARD TO
Description Envoyer une syntaxe SQL native un serveur distant.
Syntaxe 1 FORWARD TO nom_serveur instruction_sql

Syntaxe 2 FORWARD TO [ nom_serveur ]

Utilisation Linstruction FORWARD TO permet aux utilisateurs de spcifier le serveur


avec lequel une connexion passthrough est ncessaire. Linstruction est
utilisable de deux faons diffrentes :
Syntaxe 1 Envoie une instruction unique un serveur distant.
Syntaxe 2 Place Adaptive Server Anywhere en mode passthrough pour
lenvoie dune srie dinstructions un serveur distant. Toutes les
instructions suivantes sont transmises directement au serveur distant.
Pour dsactiver le mode passthrough, vous devez mettre une instruction
FORWARD TO sans spcifier de nom_serveur.
Si une erreur est dtecte partir du serveur distant en mode passthrough,
vous devez quand mme mettre une instruction FORWARD TO pour
dsactiver le mode passthrough.
Lors de ltablissement dune connexion avec le serveur au nom de
lutilisateur, le serveur utilise :
un alias de login distant dfini avec CREATE EXTERNLOGIN, ou
si aucun alias de login distant nest dfini, le nom et le mot de passe
employs pour communiquer avec Adaptive Server Anywhere
Si la connexion ne peut pas tre tablie avec le serveur spcifi, un message
renvoy lutilisateur en fournit la raison.
Une fois que les instructions ont t transmises au serveur spcifi, les
rsultats sont convertis dans une forme reconnaissable par le programme
client.
nom_serveur Nom du serveur distant.
instruction_SQL Commande dans la syntaxe SQL native du serveur
distant. La commande ou le groupe de commandes est plac entre accolades
({}).

Remarque
Linstruction FORWARD TO est une directive de serveur et ne peut pas
tre employe dans des batchs ou des procdures.
Autorisations Aucune.

509
Effets secondaires La connexion distance est dfinie au mode (non chan) AUTOCOMMIT
pour la dure de la session FORWARD TO. Tout travail en attente avant
linstruction FORWARD TO est automatiquement valid.
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Prise en charge par Open Client/Open Server.
Exemple Lexemple suivant illustre une session en mode passthrough avec le serveur
distant ase_prod :
FORWARD TO aseprod
SELECT * FROM titles; SELECT * FROM authors;
FORWARD TO

510
Chapitre 4. Instructions SQL

Clause FROM
Description Dterminer les tables ou les vues de base de donnes utiliser dans une
instruction SELECT, UPDATE ou DELETE.
Syntaxe FROM expression_table, . . .

expression_table :
table
| vue
| procedure
| table_sous-jacente
| table_sous-jacente_latrale
| table_jointe
| ( expression_table, . . . )

table :
[ id_utilisateur .] nom_table
[ [ AS ] alias ]
[ WITH ( directive_optim_table | INDEX ( nom_index ) ) | FORCE IN-
DEX ( nom_
index ) ]
vue :
[ id_utilisateur .]nom_vue [ [ AS ] alias ]
[ WITH ( directive_optim_table ) ]

procdure :
[ propritaire.]nom_procdure ( [ paramtre, . . . ] )
[ WITH( nom_colonne type_donnes, ... ) ]
[ [ AS ] nom_alias ]

table sous_jacente :
( instruction_select )
[ AS ] nom_alias [ ( nom_colonne, . . . ) ]

table_sous_jacente_latrale :
LATERAL ( instruction_select | expression_table )
[ AS ] nom_alias [ ( nom_colonne, . . . ) ]

table jointe :
expression_table oprateur_jointure expression_table
[ ON condition_jointure ]

oprateur_jointure :
[ KEY | NATURAL ] [ type_jointure ] JOIN
| CROSS JOIN

511
type_jointure :
INNER
| LEFT [ OUTER ]
| RIGHT [ OUTER ]
| FULL [ OUTER ]

directive_optim_table:
NOLOCK
| XLOCK
| READUNCOMMITTED
| READCOMMITTED
| REPEATABLEREAD
| HOLDLOCK
| SERIALIZABLE
| FASTFIRSTROW
Paramtres table Une table sous-jacente ou une table temporaire. Les tables
appartenant un utilisateur diffrent peuvent tre qualifies laide de lID
utilisateur. Les tables appartenant des groupes dont fait partie lutilisateur
en cours seront retrouves par dfaut, sans quil soit ncessaire de spcifier
lID utilisateur (reportez-vous la section Tables appartenant des
groupes [ASA - Guide dadministration, page 487]).
La clause WITH ( INDEX ( nom_index ) ) ou la clause quivalente
FORCE INDEX ( nom_index ) spcifient les directives doptimisation de
niveau index pour la table. Elles remplacent les algorithmes de slection de
plan de loptimiseur de requtes et exigent que la requte optimise accde
la table au moyen de lindex spcifi, quels que soient les autres plans
daccs pouvant tre disponibles. Vous ne pouvez spcifier quune seule
directive doptimisation de niveau index par alias. Vous ne pouvez spcifier
des directives doptimisation de niveau index que sur les tables sous-jacentes
ou les tables temporaires.

Fonctionnalit avance
Les directives doptimisation de niveau index remplacent loptimiseur
de requtes et sont de ce fait exclusivement rserves aux utilisateurs
expriments. Leur utilisation peut conduire des plans daccs non
optimiss et, par consquent, entraner une baisse de performances.
vue Spcifie la vue inclure dans la requte. Comme les tables, les vues
appartenant un utilisateur diffrent peuvent tre qualifies laide de lID
utilisateur. Les vues appartenant des groupes dont lutilisateur en cours fait
partie sont retrouves par dfaut, sans avoir spcifier lID utilisateur.
Bien que la syntaxe autorise les directives doptimisation de niveau table sur

512
Chapitre 4. Instructions SQL

les vues, ces dernires sont sans effet.


procedure Procdure stocke renvoyant un jeu de rsultats. Les
procdures ne peuvent tre utilises que dans la clause FROM des
instructions SELECT, pas dans les instructions UPDATE ni DELETE. Les
parenthses qui suivent le nom de procdure sont obligatoires, mme si la
procdure ne prend pas de paramtres. Si la procdure stocke renvoie
plusieurs jeux de rsultats, seul le premier est utilis.
La clause WITH permet de spcifier des alias de nom de colonne pour le jeu
de rsultats de la procdure. Si une clause WITH est spcifie, le nombre de
colonnes doit correspondre celui du jeu de rsultats de la procdure et les
types de donnes doivent tre compatibles avec ceux du jeu de rsultats de la
procdure. Si aucune clause WITH nest spcifie, les noms et les types de
colonne sont ceux qui sont dfinis par la dfinition de procdure. La requte
suivante illustre lutilisation de la clause WITH :
SELECT sp.customer, sp.quantity, product.name
FROM sp_customer_products( 149 ) WITH ( customer int, quantity
int ) sp
JOIN product
ON sp.customer = product.id

table_sous-jacente Vous pouvez spcifier des instructions SELECT au


lieu des noms de table ou de vue dans la clause FROM. Cela vous permet
dutiliser des groupes sur les groupes ou des jointures avec des groupes, sans
avoir crer de vue. Les tables ainsi cres sont appeles tables drives.
table_sous-jacente_latrale Table sous-jacente, procdure stocke ou
table jointe pouvant inclure des rfrences externes. Vous devez recourir
une table sous-jacente latrale si vous souhaitez utiliser une rfrence
externe dans la clause FROM. Pour plus dinformations sur les rfrences
externes, reportez-vous la section Rfrences externes [ASA - Guide de
lutilisateur SQL, page 400].
Vous pouvez utiliser des rfrences externes uniquement des tables qui
prcdent la table sous-jacente latrale dans la clause FROM. Par exemple,
vous ne pouvez pas utiliser de rfrence externe un lment dans la
liste_slection.
La table et la rfrence externe doivent tre spares par une virgule. Par
exemple, les requtes suivantes (avec rfrences externes mises en vidence)
sont correctes :
SELECT *
FROM A, LATERAL( B LEFT OUTER JOIN C ON ( A.x = B.x ) ) LDT
SELECT *
FROM A, LATERAL( SELECT * FROM B WHERE A.x = B.x ) LDT

513
SELECT *
FROM A, LATERAL( procedure-name( A.x ) ) LDT

nom_alias Identificateur utiliser lors du rfrencement dun objet un


autre emplacement de linstruction.
Si le mme alias est utilis deux fois pour dsigner la mme table, celle-ci est
traite comme si elle ne figurait quune fois dans la liste. Par exemple, dans :
SELECT *
FROM sales_order
KEY JOIN sales_order_items,
sales_order
KEY JOIN employee

les deux instances de la table sales_order sont traites comme une seule, ce
qui quivaut :
SELECT *
FROM sales_order
KEY JOIN sales_order_items
KEY JOIN employee

Tandis quavec :
SELECT *
FROM Person HUSBAND, Person WIFE

nous avons bien affaire deux instances de la table Person possdant des
alias distincts : HUSBAND et WIFE.
WITH directive_optim_table peut tre utilis pour spcifier les paramtres
de niveau disolement pour les tables ou les vues. Vous pouvez utiliser
WITH directive_optim_table pour changer le comportement dAdaptive
Server Anywhere sans modifier le niveau disolement ni dfinir une option
de base de donnes ou de connexion. Les directives doptimisation de niveau
table ne peuvent tre utilises que sur les tables principales et temporaires.

Attention
WITH directive_optim_table est une fonction avance qui doit tre exclu-
sivement utilise en cas de besoin et par des administrateurs de base de
donnes expriments. En outre, le paramtrage nest pas toujours respect.
Directives doptimisation du niveau disolement Les directives
doptimisation de niveau table ci-aprs peuvent servir paramtrer le
niveau disolement pour les tables. Elles dfinissent une mthode de
verrouillage utiliser uniquement pour cette table et uniquement pour
cette instruction.
Directives doptimisation de niveau table dfinissant les niveaux

514
Chapitre 4. Instructions SQL

disolement :
Directive_optim_table Niveau disolement

NOLOCK 0

READUNCOMMITTED 0

READCOMMITTED 1

REPEATABLEREAD 2
HOLDLOCK 3

SERIALIZABLE 3

XLOCK Tous les niveaux disolement

Remarque
XLOCK indique que les lignes traites par linstruction partir de
la table utilise pour loptimisation doivent tre exclusivement ver-
rouilles. Les lignes concernes restent verrouilles jusqu la fin de la
transaction. XLOCK fonctionne tous les niveaux disolement.
Directives doptimisation La directive doptimisation de niveau table
FASTFIRSTROW permet de dfinir lobjectif doptimisation de la
requte sans attribuer loption OPTIMIZATION_GOAL la valeur
first-row. Lorsque vous utilisez FASTFIRSTROW, Adaptive Server
Anywhere choisit un plan daccs prvu pour rduire le temps
dextraction de la premire ligne du rsultat de la requte.
Pour plus dinformations, reportez-vous la section Option
OPTIMIZATION_GOAL [base de donnes] [ASA - Guide
dadministration, page 736].
Utilisation Les instructions SELECT, UPDATE et DELETE requirent une liste
dterminant les tables dont elles doivent se servir.

Vues et tables drives


Bien que cette description fasse rfrence des tables, elle sapplique
galement aux vues et aux tables drives, sauf indication contraire.
La clause FROM cre un jeu de rsultats comprenant lensemble des
colonnes de toutes les tables spcifies. Initialement, toutes les combinaisons
de lignes des tables de la liste se trouvent dans le jeu de rsultats, puis le
nombre de combinaisons est gnralement rduit par des conditions JOIN
et/ou WHERE.
Il est impossible dutiliser une phrase ON avec CROSS JOIN.
Autorisations Aucune.

515
Effets secondaires Aucun.
Voir aussi Instruction DELETE la page 465
Instruction SELECT la page 627
Instruction UPDATE la page 683
Jointures : Recherche de donnes dans plusieurs tables [ASA - Guide de
lutilisateur SQL, page 287]

Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme. La complexit de la clause


FROM est telle quil vous faut vrifier chaque clause par rapport la
norme.

SQL/99 Fonctionnalit principale, except pour KEY JOIN, qui est une
extension propritaire, ainsi que pour FULL OUTER JOIN et NATURAL
JOIN, qui sont des fonctions principales/SQL extrieures au langage SQL
basique. La complexit de la clause FROM est telle quil vous faut
vrifier chaque clause par rapport la norme.
Sybase La phrase ON nest plus supportes dans les versions
dAdaptive Server Enterprise antrieures la version 12. Dans ces
versions, vous devez utiliser la clause WHERE pour crer des jointures.
Exemple Exemples de clauses FROM correctes :
...
FROM employee
...
...
FROM employee NATURAL JOIN department
...
...
FROM customer
KEY JOIN sales_order
KEY JOIN sales_order_items
KEY JOIN product
...

La requte ci-dessous illustre lutilisation des tables drives dans une


requte.
SELECT lname, fname, number_of_orders
FROM customer JOIN
( SELECT cust_id, count(*)
FROM sales_order
GROUP BY cust_id )
AS sales_order_counts ( cust_id,
number_of_orders )
ON ( customer.id = sales_order_counts.cust_id )
WHERE number_of_orders > 3

La requte suivante illustre la slection de lignes partir de jeux de rsultats


de procdure stocke :

516
Chapitre 4. Instructions SQL

SELECT t.id, t.quantity_ordered AS q, p.name


FROM sp_customer_products( 149 ) t JOIN product p
ON t.id = p.id

517
Instruction GET DATA [ESQL]
Description Extraire une chane ou des donnes binaires dune colonne sur la ligne
courante dun curseur. Linstruction GET DATA est gnralement utilise
pour extraire des champs LONG BINARY ou LONG VARCHAR.
Reportez-vous la section Instruction SET la page 635.
Syntaxe GET DATA nom_curseur
COLUMN num_colonne :
OFFSET offset_dbut
[ WITH TEXTPTR ]
USING DESCRIPTOR nom_sqlda | INTO var_hte [, . . . ]

nom_curseur : identificateur ou var_hte

num_colonne : entier ou var_hte

offset_dbut : entier ou var_hte

nom_sqlda : identificateur

Paramtres Clause COLUMN La valeur de num_colonne commence un (1) et


identifie la colonne dont les donnes doivent tre extraites. Cette colonne
doit tre de type chane ou binaire.
Clause OFFSET La valeur offset_dbut indique le nombre doctets
ignorer dans la valeur du champ. Normalement, il sagit du nombre doctets
prcdemment extraits. Le nombre doctets extraits par cette instruction
GET DATA est dtermin par la longueur de la variable hte cible.
La valeur indicateur de cette dernire tant un entier court, elle ne peut pas
toujours contenir le nombre doctets tronqus. Au lieu de cela, elle contient
une valeur ngative si le champ a la valeur NULL, une valeur positive (PAS
ncessairement le nombre doctets tronqus) si la valeur est tronque et zro
si une valeur NOT NULL nest pas tronque.
De mme, si une variable hte ou un champ LONGVARCHAR est utilis
avec un offset suprieur zro, le champ untrunc_len nindique pas
prcisment la taille avant la troncature.
Clause WITH TEXTPTR Si la clause WITH TEXTPTR est spcifie, un
pointeur de texte est extrait destination dune seconde variable indicateur
ou du second champ de la SQLDA. Ce pointeur de texte peut tre utilis
avec les instructions Transact-SQL READ TEXT et WRITE TEXT. Il a une
valeur binaire sur 16 bits et peut tre dclar comme suit :
DECL_BINARY( 16 ) textptr_var;

518
Chapitre 4. Instructions SQL

WITH TEXTPTR ne peut tre utilis quavec des types de donnes longs
(LONG BINARY, LONG VARCHAR, TEXT, IMAGE). Si vous essayez de
lutiliser avec un autre type de donnes, lerreur
INVALID_TEXTPTR_VALUE est retourne.
La longueur totale des donnes est renvoye dans le champ SQLCOUNT de
la structure SQLCA.
Utilisation Extrait la valeur dune seule colonne de la ligne la position actuelle du
curseur.
Autorisations Le curseur doit tre ouvert et positionn sur une ligne laide de FETCH.
Effets secondaires Aucun.
Voir aussi Instruction FETCH [ESQL] [SP] la page 502
Instruction READTEXT [T-SQL] la page 600
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non supporte par Open Client/Open Server. Vous pouvez
galement utiliser une instruction Transact-SQL READTEXT.
Exemple Lexemple suivant utilise GET DATA pour extraire un objet binaire
volumineux, galement appel blob (Binary Large Object) :
EXEC SQL BEGIN DECLARE SECTION;
DECL_BINARY(1000) piece;
short ind;

EXEC SQL END DECLARE SECTION;


int size;
/* Open a cursor on a long varchar field */
EXEC SQL DECLARE big_cursor CURSOR FOR
SELECT long_data FROM some_table
WHERE key_id = 2;
EXEC SQL OPEN big_cursor;
EXEC SQL FETCH big_cursor INTO :piece;
for( offset = 0; ; offset += piece.len ) {
EXEC SQL GET DATA big_cursor COLUMN 1
OFFSET :offset INTO :piece:ind;
/* Done if the NULL value */
if( ind < 0 ) break;
write_out_piece( piece );
/* Done when the piece was not truncated */
if( ind == 0 ) break;
}
EXEC SQL CLOSE big_cursor;

519
Instruction GET DESCRIPTOR [ESQL]
Description Extraire des informations sur la variable dans la zone descripteur, ou extraire
sa valeur.
Syntaxe GET DESCRIPTOR nom_descripteur
{ var_hte = COUNT | VALUE { entier | var_hte } affectation [, . . . ] }

affectation :
var_hte = TYPE | LENGTH | PRECISION | SCALE | DATA
| INDICATOR | NAME | NULLABLE | RETURNED_LENGTH
Utilisation Linstruction GET DESCRIPTOR est utilise pour extraire des informations
sur une variable dans la zone descripteur ou pour extraire sa valeur.
La valeur { entier | var_hte } spcifie la variable sur laquelle les
informations sont extraites de la zone descripteur. Lors de lopration GET
... DATA, une vrification du type est excute de faon assurer que la
variable hte et la variable du descripteur ont le mme type de donnes.
LONGVARCHAR et LONGBINARY ne sont pas pris en charge par GET
DESCRIPTOR ... DATA.
Toute erreur est renvoye dans la SQLCA.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction ALLOCATE DESCRIPTOR [ESQL] la page 273
Instruction DEALLOCATE DESCRIPTOR [ESQL] la page 453
Instruction SET DESCRIPTOR [ESQL] la page 642
Zone descripteur SQL (SQLDA) [ASA - Guide de programmation,
page 195]

Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.


SQL/99 Fonction principale.

Sybase Prise en charge par Open Client/Open Server.


Exemple Lexemple suivant renvoie le type de la colonne ayant la position col_num
dans sqlda :
int get_type( SQLDA *sqlda, int col_num )
{
EXEC SQL BEGIN DECLARE SECTION;
int ret_type;
int col = col_num;
EXEC SQL END DECLARE SECTION;
EXEC SQL GET DESCRIPTOR sqlda VALUE :col :ret_type = TYPE;
return( ret_type );
}

520
Chapitre 4. Instructions SQL

Pour un exemple, reportez-vous la section Instruction ALLOCATE


DESCRIPTOR [ESQL] la page 273.

521
Instruction GET OPTION [ESQL]
Description Vous pouvez utiliser cette instruction pour obtenir le paramtrage actuel
dune option. Il est plutt conseill dutiliser la fonction
connection_property.
Syntaxe GET OPTION [ id_utilisateur.]nom_option
[ INTO var_hte ]
[ USING DESCRIPTOR nom_sqlda ]

id_utilisateur : identificateur , chane ou var_hte

nom_option : identificateur , chane ou var_hte

var_hte : variable indicateur autorise

nom_sqlda : identificateur

Utilisation Linstruction GET OPTION est fournie pour assurer la compatibilit avec
des versions antrieures du logiciel. Il est conseill dutiliser la fonction
systme connection_property pour obtenir les valeurs des options.
Linstruction GET OPTION extrait la valeur dfinie pour loption
nom_option correspondant lid_utilisateur spcifi (ou lutilisateur
connect, si id_utilisateur est omis). Il sagit soit du paramtrage personnel
de la personne connecte, soit du paramtrage PUBLICo si cette personne
na dfini aucune valeur. Si loption spcifie est une option de base de
donnes et que lutilisateur a dfini une valeur temporaire, celle-ci est
extraite.
Si nom_option nexiste pas, GET OPTION renvoie lavertissement
SQLE_NOTFOUND.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction SET OPTION la page 644
Procdures stockes systme et catalogue la page 815
CONNECTION_PROPERTY (fonction systme) la page 122
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple Linstruction ci-dessous illustre lutilisation de GET OPTION.
EXEC SQL GET OPTION date_format INTO :datefmt;

522
Chapitre 4. Instructions SQL

Instruction GOTO [T-SQL]


Description Lien avec ltiquette spcifie.
Syntaxe tiquette : GOTO tiquette

Utilisation Toutes les instructions dans une procdure, un trigger ou un batch


Transact-SQL peuvent porter une tiquette. Le nom de ltiquette est un
identificateur correct, suivi de deux points. Le deux-points est ignor dans
linstruction GOTO.
Autorisations Aucune.
Effets secondaires Aucun.
Normes et compatibilit SQL/92 Fonctionnalit de module stock de manire permanente.
SQL/99 Fonctionnalit de module stock de manire permanente.
Sybase Adaptive Server Enterprise supporte linstruction GOTO.
Exemple Le batch Transact-SQL ci-aprs permet dafficher quatre fois le message
oui sur la fentre du serveur :
declare @count smallint
select @count = 1
restart:
print yes
select @count = @count + 1
while @count <=4
goto restart

523
Instruction GRANT
Description Crer des ID dutilisateur, accorder ou refuser des autorisations des
utilisateurs spcifiques, et crer ou modifier des mots de passe.
Syntaxe 1 GRANT CONNECT TO id_utilisateur , . . .
[ AT id_dpart ]
IDENTIFIED BY mot_de_passe, . . .

Syntaxe 2 GRANT {
DBA,
GROUP,
MEMBERSHIP IN GROUP id_utilisateur , . . .
[ RESOURCE | ALL ]
}
TO id_utilisateur , . . .
Syntaxe 3 GRANT {
ALL [ PRIVILEGES ],
ALTER,
DELETE,
INSERT,
REFERENCES [ ( nom_colonne, . . . ) ],
SELECT [ ( nom_colonne, . . . ) ],
UPDATE [ ( nom_colonne, . . . ) ],
}
ON [ propritaire.]nom_table
TO id_utilisateur , . . .
[ WITH GRANT OPTION ]
[ FROM id_utilisateur ]

Syntaxe 4 GRANT EXECUTE ON [ propritaire.]nom_procdure TO id_utilisateur , . . .

Syntaxe 5 GRANT INTEGRATED LOGIN TO nom_profil_utilisateur , . . . AS USER id_utilisateur

Paramtres CONNECT TO Cre un utilisateur. GRANT CONNECT peut aussi tre


employe par toute personne pour modifier son mot de passe. Pour crer un
utilisateur avec une chane vide comme mot de passe, saisissez :
GRANT CONNECT TO userid IDENTIFIED BY ""

Pour crer un utilisateur sans mot de passe, saisissez :


GRANT CONNECT TO userid

Un utilisateur sans mot de passe ne peut pas se connecter la base de


donnes. Cette limitation est utile lorsque vous crez un groupe et que vous
ne voulez pas que des membres se connectent la base de donnes en
utilisant lID utilisateur du groupe. Le mot de passe doit tre un

524
Chapitre 4. Instructions SQL

identificateur valable (reportez-vous la description dans Identificateurs


la page 8.). La taille des mots de passe ne doit pas dpasser 255 octets.
Les ID utilisateur et mots de passe de base de donnes suivants sont
incorrects :
les noms qui commencent par un espace, une apostrophe ou des
guillemets ;
les noms qui se terminent par un espace ;

les noms qui contiennent des points-virgules.


Il est conseill dutiliser un mot de passe compos de caractres ASCII
7 bits car les caractres ASCII 8 bits au-del de 127 risquent de ne pas
fonctionner correctement lorsque la conversion des jeux de caractres est
active et que ces derniers ne correspondent pas.
Si vous souhaitez utiliser des caractres au-del de 127, vous devez excuter
lune des oprations suivantes :
spcifier CharSet=none dans votre chane de connexion pour dsactiver
la conversion des jeux de caractres ;
spcifier le jeu de caractres laide du paramtre de connexion CharSet ;
spcifier loption -ct- pour dsactiver la conversion des jeux de caractres
sur le serveur de base de donnes.

AT id_dpart Cette clause nest pas adapte une utilisation gnrale. Elle
spcifie la valeur numrique interne utiliser pour le premier ID utilisateur
de la liste.
Elle est mise en oeuvre principalement pour tre exploite avec lutilitaire de
dchargement.
DBA Un utilisateur disposant des droits DBA (administrateur de base de
donnes) a lautorisation deffectuer nimporte quelle tche. Dans une
entreprise, ces droits sont gnralement rservs au responsable de la base
de donnes.
GROUP Permet aux utilisateurs davoir des membres.
Pour plus dinformations, reportez-vous la section Gestion de
groupes [ASA - Guide dadministration, page 484].
MEMBERSHIP IN GROUP Permet aux utilisateurs dhriter des
autorisations sur des tables octroyes un groupe et de rfrencer des tables
cres par le groupe sans avoir qualifier le nom de la table.

525
Pour plus dinformations, reportez-vous la section Gestion de
groupes [ASA - Guide dadministration, page 484].
La syntaxe 3 de linstruction GRANT permet doctroyer des autorisations
sur des tables ou des vues particulires. Vous pouvez spcifier ces
autorisations individuellement ou utiliser le mot-cl ALL pour octroyer
directement les six autorisations.
RESOURCE Permet lutilisateur de crer des tables et des vues. Dans la
syntaxe 2, ALL est synonyme de RESOURCE, qui est compatible avec
Sybase Adaptive Server Enterprise.
ALL Dans la syntaxe 3, octroie toutes les autorisations mentionnes
ci-aprs.
ALTER Les utilisateurs peuvent modifier la table spcifie laide de
linstruction ALTER TABLE. Cette autorisation nest pas applicable aux
vues.
DELETE Les utilisateurs peuvent supprimer des lignes de la table ou de la
vue spcifie.
INSERT Les utilisateurs peuvent insrer des lignes dans la table ou la vue
spcifie.
REFERENCES [(nom_colonne, . . .)] Les utilisateurs peuvent crer des
index pour les tables spcifies, ainsi que des cls trangres faisant
rfrence ces tables. Si des noms de colonne sont spcifis, les utilisateurs
ne peuvent faire rfrence qu ces colonnes. Les autorisations
REFERENCES sur des colonnes ne sappliquent pas aux vues.
INDEX est synonyme de REFERENCES.
SELECT [(nom_colonne, . . .)] Les utilisateurs peuvent consulter les
informations de cette vue ou de cette table. Si des noms de colonne sont
spcifis, les utilisateurs ne peuvent consulter que ces colonnes. Les
autorisations SELECT sur des colonnes ne sappliquent pas aux vues.
UPDATE [(nom_colonne, . . .)] Les utilisateurs peuvent consulter les
informations de cette vue ou de cette table. Si des noms de colonne sont
spcifis, les utilisateurs ne peuvent mettre jour que ces colonnes. Les
autorisations UPDATE sur des colonnes ne sappliquent pas aux vues.
FROM Si FROM id_utilisateur est spcifi, lID utilisateur est enregistr
en tant quID utilisateur de loctroyeur dans les tables systme. Cette clause
est destine tre exploite avec lutilitaire de dchargement (dbunload). Ne
lutilisez pas et ne la modifiez pas directement.
Utilisation Linstruction GRANT permet doctroyer des autorisations sur la base de

526
Chapitre 4. Instructions SQL

donnes des ID utilisateur individuels et des groupes. Elle sert aussi


crer et supprimer des utilisateurs et des groupes.
Si la clause WITH GRANT OPTION est spcifie, lID utilisateur dsign a
aussi la possibilit doctroyer les mmes autorisations dautres ID
utilisateur.
La syntaxe 4 de linstruction GRANT permet doctroyer lautorisation
dexcuter une procdure.
La syntaxe 5 de linstruction GRANT cre un mappage de login intgr
explicite entre un ou plusieurs profils de groupes ou dutilisateurs Windows
et un ID utilisateur de base de donnes existant, permettant ainsi aux
utilisateurs qui se connectent leur machine locale de se connecter une
base de donnes sans avoir spcifier dID utilisateur ou de mot de passe.
Pour plus dinformations sur les logins intgrs, reportez-vous la
section Utilisation des logins intgrs [ASA - Guide dadministration,
page 81].

Autorisations Syntaxe 1 ou 2 Lune des conditions suivantes doit tre respecte :


Vous modifiez votre mot de passe avec GRANT CONNECT.
Vous devez dtenir les droits DBA.
Pour changer le mot de passe dun autre utilisateur (disposant des droits
DBA), vous devez vous assurer que celui-ci nest pas connect la base de
donnes.
Syntaxe 3 Si la clause FROM est spcifie, vous devez disposer des droits
DBA. Lune des conditions suivantes doit tre respecte :
Vous devez tre propritaire de la table.
Des autorisations sur la table vous ont t octroyes avec GRANT
OPTION.
Vous devez dtenir les droits DBA.
Syntaxe 4 Lune des conditions suivantes doit tre respecte :
Vous devez tre propritaire de la procdure
Vous devez dtenir les droits DBA.
Syntaxe 5 La condition suivante doit tre respecte :
Vous devez dtenir les droits DBA.
Effets secondaires Commit automatique.
Voir aussi
527
Instruction REVOKE la page 613
Normes et compatibilit SQL/92 La syntaxe 3 est une fonctionnalit dentre de gamme. La
syntaxe 4 est une fonction de module stock de manire permanente. Les
autres syntaxes sont des extensions dditeur.

SQL/99 La syntaxe 3 est une fonction principale. La syntaxe 4 est une


fonction de module stock de manire permanente. Les autres syntaxes
sont des extensions dditeur.
Sybase Les syntaxes 2 et 3 sont supportes dans Adaptive Server
Enterprise. Le modle de scurit est diffrent dans Adaptive Server
Enterprise et dans Adaptive Server Anywhere, les autres syntaxes sont
donc diffrentes.
Exemple Cration dutilisateurs pour la base de donnes :
GRANT
CONNECT TO Laurel, Hardy
IDENTIFIED BY Stan, Ollie

Octroi dautorisations sur la table employee lutilisateur Laurel :


GRANT
SELECT, UPDATE ( street )
ON employee
TO Laurel

Il est possible doctroyer plusieurs autorisations dans une seule instruction.


Sparez-les les unes des autres par des virgules.
Autorisation donne lutilisateur Hardy dexcuter la procdure
Calculate_Report :
GRANT
EXECUTE ON Calculate_Report
TO Hardy

528
Chapitre 4. Instructions SQL

Instruction GRANT CONSOLIDATE [SQL Remote]


Description Servez-vous de cette instruction pour identifier la base de donnes situe
immdiatement au-dessus de la base de donnes courante dans une
hirarchie SQL Remote, et qui recevra des messages de la base courante.
Syntaxe GRANT CONSOLIDATE
TO id_utilisateur
TYPE systme_messagerie, . . .
ADDRESS chane_adresse, . . .
[ SEND { EVERY | AT }hh:mm:ss ]

systme_messagerie : FILE | FTP | MAPI | SMTP | VIM

adresse : chane

Paramtres id_utilisateur ID de lutilisateur auquel lautorisation doit tre octroye.


systme_messagerie Un des systmes de messagerie pris en charge par
SQL Remote.
adresse Adresse du systme du messagerie spcifi.
Utilisation Dans une configuration SQL Remote, la base de donnes immdiatement
au-dessus de la base courante doit disposer des autorisations
CONSOLIDATE. Linstruction GRANT CONSOLIDATE est excute au
niveau dune base de donnes distante pour permettre celle-ci didentifier
sa base consolide. Chaque base ne peut comporter quun seul ID utilisateur
dot des autorisations CONSOLIDATE : une base de donnes distante ne
peut tre associe qu une seule base de donnes consolide.
Lutilisateur consolid est identifi par un systme de messagerie qui
dtermine la mthode dacheminement des messages vers et depuis cet
utilisateur. Le nom de ladresse doit tre une adresse correcte pour le
systme de messagerie utilis et apparatre entre guillemets simples. Il ne
peut y avoir quun seul utilisateur consolid par base de donnes distante.
Dans le cas des messages de type FILE, ladresse est un sous-rpertoire du
rpertoire dsign par la variable denvironnement SQLREMOTE.
Linstruction GRANT CONSOLIDATE est ncessaire pour que la base de
donnes consolide puisse recevoir les messages, mais ne permet pas un
utilisateur de souscrire cette base des donnes. Pour cela, il faut crer une
souscription lune des publications de la base courante pour lID utilisateur
consolid. Lexcution de lutilitaire Extraction de base de donnes au
niveau dune base consolide cre une base distante avec linstruction
GRANT CONSOLIDATE approprie.

529
Les clauses optionnelles SEND EVERY et SEND AT indiquent la frquence
laquelle les messages sont envoys. La chane contient des indications
horaires correspondant soit au dlai entre deux messages (pour SEND
EVERY), soit lheure de la journe laquelle les messages sont envoys
(pour SEND AT). Avec SEND AT, les messages sont envoys une fois par
jour.
Si les autorisations REMOTE dun utilisateur nincluent pas la clause SEND
EVERY ou SEND AT, lagent de message traite les messages puis sarrte.
Pour garantir une excution continue de cet agent, vous devez vrifier que la
clause de frquence SEND AT ou SEND EVERY est bien spcifie pour tout
utilisateur disposant de lautorisation REMOTE.
On prsuppose que, dans de nombreuses bases de donnes distantes, lagent
de message est excut de faon priodique et quaucune clause SEND nest
spcifie dans la base de donnes consolide.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Commit automatique.
Voir aussi Instruction GRANT PUBLISH [SQL Remote] la page 531
Instruction GRANT REMOTE [SQL Remote] la page 532
Instruction REVOKE CONSOLIDATE [SQL Remote] la page 616
Procdure sp_grant_consolidate [SQL Remote - Guide de lutilisateur,
page 428]

Exemple GRANT CONSOLIDATE TO con_db


TYPE mapi
ADDRESS Consolidated Database

530
Chapitre 4. Instructions SQL

Instruction GRANT PUBLISH [SQL Remote]


Description Identifier lditeur de la base actuelle.
Syntaxe GRANT PUBLISH TO id_utilisateur

Utilisation Chaque base de donnes dune configuration SQL Remote est identifie
dans les messages sortants par un ID utilisateur appel publisher (diteur).
Linstruction GRANT PUBLISH dtermine lID utilisateur de lditeur
associ ces messages.
Un seul ID utilisateur peut dtenir les droits PUBLISH. Il est identifi par la
constante spciale CURRENT PUBLISHER. La requte suivante permet
didentifier lditeur courant :
SELECT CURRENT PUBLISHER

Sil nexiste pas dditeur, la constante spciale contient la valeur NULL.


Cette constante peut tre utilise comme paramtre par dfaut pour les
colonnes. Il est souvent utile dinclure une colonne CURRENT
PUBLISHER dans la cl primaire pour la rplication des tables, ce qui vite
les conflits de cls primaires lors des mises jour sur plusieurs sites.
Pour changer dditeur, vous devez dabord supprimer lditeur courant
laide de linstruction REVOKE PUBLISH, puis en crer un nouveau avec
linstruction GRANT PUBLISH.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Commit automatique.
Voir aussi Instruction GRANT PUBLISH [SQL Remote] la page 531
Instruction GRANT CONSOLIDATE [SQL Remote] la page 529
Instruction REVOKE PUBLISH [SQL Remote] la page 617
Instruction CREATE SUBSCRIPTION [SQL Remote] la page 417
Procdure sp_publisher [SQL Remote - Guide de lutilisateur, page 447]
Exemple GRANT PUBLISH TO publisher_ID

531
Instruction GRANT REMOTE [SQL Remote]
Description Identifier la base de donnes situe immdiatement au-dessous de la base de
donnes actuelle dans une hirarchie SQL Remote, et qui recevra des
messages de la base actuelle. Ces bases sont appeles utilisateurs distants.
Syntaxe GRANT REMOTE TO id_utilisateur , . . .
TYPE systme_messagerie, . . .
ADDRESS chane_adresse, . . .
[ SEND { EVERY | AT } heure_envoi]

Paramtres id_utilisateur ID de lutilisateur auquel lautorisation doit tre octroye.


systme_messagerie Un des systmes de messagerie pris en charge par
SQL Remote. Il doit sagir de lun des types ci-dessous.
FILE
FTP
MAPI

SMTP
VIM
chane_adresse Chane contenant une adresse correcte pour le systme de
messagerie spcifi.
heure_envoi Chane contenant une spcification de temps sous la forme
hh :mm :ss.
Utilisation Dans une configuration SQL Remote, chaque base de donnes qui reoit des
messages de la base courante doit disposer des autorisations REMOTE.
La seule exception cette rgle est la base de donnes situe immdiatement
au-dessus de la base courante, qui doit disposer des autorisations
CONSOLIDATE.
Lutilisateur distant est identifi par un systme de messagerie qui dtermine
la mthode dacheminement des messages vers et depuis lutilisateur
consolid. Le nom de ladresse doit tre une adresse correcte pour le
systme de messagerie utilis et apparatre entre guillemets simples.
Dans le cas des messages de type FILE, ladresse est un sous-rpertoire du
rpertoire dsign par la variable denvironnement SQLREMOTE.
Linstruction GRANT REMOTE est ncessaire pour que la base de donnes
distante puisse recevoir les messages, mais ne permet pas un utilisateur de
souscrire cette base des donnes. Pour cela, il faut crer une souscription

532
Chapitre 4. Instructions SQL

lune des publications de la base courante pour lID utilisateur, laide de


lutilitaire Extraction de base de donnes ou de linstruction CREATE
SUBSCRIPTION.
Les clauses optionnelles SEND EVERY et SEND AT indiquent la frquence
laquelle les messages sont envoys. La chane contient des indications
horaires correspondant soit au dlai entre deux messages (pour SEND
EVERY), soit lheure de la journe laquelle les messages sont envoys
(pour SEND AT). Avec SEND AT, les messages sont envoys une fois par
jour.
Si les autorisations REMOTE dun utilisateur nincluent pas la clause SEND
EVERY ou SEND AT, lagent de message traite les messages puis sarrte.
Pour garantir une excution continue de cet agent, vous devez vrifier que la
clause de frquence SEND AT ou SEND EVERY est bien spcifie pour tout
utilisateur disposant de lautorisation REMOTE.
SQL Anywhere prsuppose que, dans de nombreuses bases de donnes
consolides, lagent de message est excut de faon continue et que la
clause SEND a donc t spcifie. Une pratique courante consiste envoyer
des messages aux utilisateurs dordinateurs portables de manire
quotidienne (SEND AT) et aux serveurs distants toutes les une ou deux
heures (SEND EVERY). Dans un souci defficacit, il est recommand
duniformiser au maximum les heures denvoi.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Commit automatique.
Voir aussi Instruction GRANT PUBLISH [SQL Remote] la page 531
Instruction REVOKE REMOTE [SQL Remote] la page 619
Instruction GRANT CONSOLIDATE [SQL Remote] la page 529
Procdure sp_grant_remote [SQL Remote - Guide de lutilisateur, page 431]
Octroi et rvocation des autorisations REMOTE et CONSOLIDATE
[SQL Remote - Guide de lutilisateur, page 222]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.
Exemple Linstruction ci-dessous attribue des autorisations REMOTE
lutilisateur SamS par lintermdiaire dun systme de messagerie MAPI,
en envoyant des messages ladresse Singer, Samuel une fois toutes les
deux heures.
GRANT REMOTE TO SamS
TYPE mapi
ADDRESS Singer, Samuel
SEND EVERY 02:00

533
Instruction GRANT REMOTE DBA [SQL Remote]
Description Octroyer des privilges DBA un ID utilisateur, mais uniquement lorsquil
se connecte par lintermdiaire de lagent de message.
Syntaxe GRANT REMOTE DBA
TO id_utilisateur , . . .
IDENTIFIED BY mot_de_passe

Utilisation Les droits REMOTE DBA permettent lagent de message de disposer dun
accs total la base de donnes pour apporter les modifications contenues
dans les messages, tout en vitant les problmes de scurit relatifs la
distribution de mots de passe dID utilisateur.
REMOTE DBA a les proprits suivantes :
Aucune autorisation distincte si la connexion nest pas tablie depuis
lagent de message. Un ID utilisateur dtenant le droit REMOTE DBA ne
bnficie pas de privilges supplmentaires lors de connexions issues
dapplications clientes diffrentes de SQL Remote. Ainsi, les problmes
de scurit sont vits, mme si lID et le mot de passe dun utilisateur
REMOTE DBA sont largement diffuss. Tant que lID utilisateur ne
possde pas dautorisations sur la base de donnes suprieures
CONNECT, personne ne peut avoir recours cet ID utilisateur pour
accder aux donnes de la base.

Autorisations DBA compltes si la connexion est tablie depuis lagent


de message.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Commit automatique.
Voir aussi Agent de message et scurit de rplication [SQL Remote - Guide de
lutilisateur, page 265]
Instruction REVOKE REMOTE DBA [SQL Remote] la page 620
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

534
Chapitre 4. Instructions SQL

Clause GROUP BY
Description Grouper des colonnes, des alias et des fonctions dans linstruction SELECT.
Syntaxe GROUP BY [ liste_group_by
| ROLLUP ( liste_group_by )
| ( liste_group_by ) WITH ROLLUP
| CUBE ( liste_group_by )
| ( liste_group_by ) WITH CUBE
| GROUPING SETS ( ensembles_regroupement ) ]
[ HAVING condition_recherche ]

Paramtres Mot-cl ROLLUP Lopration ROLLUP ajoute des lignes de synthse (ou
de sous-total) dans le jeu de rsultats dune requte, au moyen dune clause
GROUP BY.
Un prfixe est un sous-ensemble des lments de la liste_group_by. Il est
dfini par exclusion dun ou de plusieurs lments de droite parmi ceux de la
liste_group_by. Une ligne supplmentaire est ajoute dans le jeu de rsultats
pour chaque prfixe. Cette ligne contient des informations de sous-total pour
un ensemble de lignes dans le jeu de rsultats GROUP BY. Chaque ligne de
sous-total comprend les lments suivants :
Colonne exclue du prfixe NULL.
Colonne incluse dans le prfixe Valeur de la colonne.
Fonction dagrgat Agrgat sur les valeurs des colonnes exclues.

Pour plus dinformations sur les oprations ROLLUP, reportez-vous la


section Utilisation de ROLLUP [ASA - Guide de lutilisateur SQL, page 366].
Mot-cl WITH ROLLUP Il sagit dune autre mthode de cration de
requtes ROLLUP. Elle renvoie le mme jeu de rsultats que la syntaxe
ROLLUP. Pour plus dinformations sur les oprations ROLLUP,
reportez-vous la section Utilisation de ROLLUP [ASA - Guide de
lutilisateur SQL, page 366].

Mot-cl CUBE Lopration CUBE gnre des lignes de sous-total dune


clause GROUP BY en prenant en compte le regroupement de tous les
sous-ensembles possibles de la liste_group_by. Pour plus dinformations sur
les oprations CUBE, reportez-vous la section Utilisation de CUBE [ASA
- Guide de lutilisateur SQL, page 371].

Mot-cl WITH CUBE Il sagit dune autre mthode de cration de requtes


CUBE. Elle renvoie le mme jeu de rsultats que la syntaxe CUBE. Pour
plus dinformations sur les oprations CUBE, reportez-vous la section
Utilisation de CUBE [ASA - Guide de lutilisateur SQL, page 371].

535
Mot-cl GROUPING SETS Lopration GROUPING SETS permet de
calculer des groupes sur plusieurs ensembles de colonnes de regroupement
diffrents (appels GROUPING SETS) dans la mme requte. Les lments
entre parenthses reprsentent chacun une famille dun ou de plusieurs
GROUPING SETS. Tous les GROUPING SETS contenus dans ces familles
sont calculs lorsque le mot-cl GROUPING SETS est utilis. Les lignes
renvoyes pour les GROUPING SETS neffectuant pas de regroupement par
colonnes non agrges de la liste_selec contiendront des valeurs NULL dans
les colonnes non groupes, non agrges. Pour distinguer les valeurs NULL
prsentes dans les donnes dentre et les valeurs NULL insres par
loprateur de regroupement, utilisez la fonction dagrgat GROUPING().
Pour plus dinformations sur lopration GROUPING SETS, reportez-vous
la section Utilisation de GROUPING SETS [ASA - Guide de lutilisateur
SQL, page 374].

Remarque
Dans une requte GROUPING SETS, ( ) dsigne un GROUPING SET qui
nutilise aucune colonne de regroupement et qui gnre de ce fait une seule
ligne de sortie dans le jeu de rsultats.
Clause HAVING Cette clause slectionne les lignes en fonction de valeurs
de groupe et non des valeurs de ligne individuelle. La clause HAVING ne
peut sutiliser que si linstruction contient une clause GROUP BY ou si la
liste de slection se compose uniquement de fonctions dagrgat. Tout nom
de colonne rfrenc dans la clause HAVING doit tre spcifi dans la
clause GROUP BY ou tre employ en tant que paramtre dune fonction
dagrgat dans la clause HAVING.
Utilisation Vous pouvez effectuer des regroupements par colonne, alias ou fonction. Le
rsultat de la requte contient une ligne pour chaque ensemble de valeurs
distinct dans les colonnes, les alias ou les fonctions spcifis. Toutes les
lignes ayant la valeur NULL sont traites comme un ensemble unique. Les
lignes de rsultats sont souvent appeles groupes tant donn que le rsultat
comporte une ligne pour chaque groupe de lignes de la liste des tables. Pour
affiner les rsultats, vous pouvez appliquer ces groupes des fonctions
dagrgat.

Remarque
Si vous utilisez la clause GROUP BY, la liste de slection (liste_select ), la
clause HAVING et la clause ORDER BY peuvent rfrencer uniquement
des identificateurs spcifis dans la clause GROUP BY. Cette exception est
due au fait que la liste de slection et la clause HAVING peuvent contenir
des fonctions dagrgat.

536
Chapitre 4. Instructions SQL

Voir aussi Expressions la page 17


Instruction SELECT la page 627
Clause FROM la page 511
Conditions de recherche la page 24
Opration UNION la page 676
Jointures : Recherche de donnes dans plusieurs tables [ASA - Guide de
lutilisateur SQL, page 287]
Prsentation des oprations OLAP [ASA - Guide de lutilisateur SQL,
page 361]
Utilisation de ROLLUP [ASA - Guide de lutilisateur SQL, page 366]
Utilisation de CUBE [ASA - Guide de lutilisateur SQL, page 371]
Utilisation de GROUPING SETS [ASA - Guide de lutilisateur SQL,
page 374]
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme. La complexit de
linstruction SELECT est telle quil vous faut vrifier chaque clause par
rapport la norme.
SQL/99 Fonction principale. La complexit de linstruction SELECT
est telle quil vous faut vrifier chaque clause par rapport la norme. Par
exemple, le mot-cl ROLLUP fait partie de la fonction T431.
Sybase Prise en charge par Adaptive Server Enterprise, avec certaines
diffrences de syntaxe. Les fonctionnalits OLAP ne sont pas supportes
dans Adaptive Server Enterprise.
Exemples Lexemple de requte ROLLUP qui suit renvoie un jeu de rsultats indiquant
le nombre total de commandes, puis fournit les sous-totaux pour chaque
anne (2000 et 2001).
SELECT year (order_date) Year, quarter (order_date) Quarter,
count (*) Orders
FROM sales_order
GROUP BY ROLLUP (Year, Quarter)
ORDER BY Year, Quarter

Comme lexemple de requte ROLLUP prcdent, lexemple de requte


CUBE ci-aprs renvoie un jeu de rsultats indiquant le nombre total de
commandes, puis fournit les sous-totaux pour chaque anne (2000 et 2001).
A la diffrence de ROLLUP, cette requte fournit galement des sous-totaux
pour chaque trimestre (1, 2, 3 et 4).
SELECT year (order_date) Year, quarter (order_date) Quarter,
count (*) Orders
FROM sales_order
GROUP BY CUBE (Year, Quarter)
ORDER BY Year, Quarter

Lexemple de requte GROUPING SETS ci-aprs renvoie un jeu de rsultats

537
indiquant le sous-total du nombre de commandes passes pour les annes
2000 et 2001. Lopration GROUPING SETS permet de slectionner les
colonnes inclure dans le calcul du sous-total plutt que de renvoyer toutes
les combinaisons de sous-totaux, tel quavec lopration CUBE.
SELECT year (order_date) Year, quarter (order_date) Quarter,
count (*) Orders
FROM sales_order
GROUP BY GROUPING SETS ((Year, Quarter), (Year))
ORDER BY Year, Quarter

538
Chapitre 4. Instructions SQL

Instruction HELP [Interactive SQL]


Description Obtenir de laide dans lenvironnement Interactive SQL.
Syntaxe HELP [rubrique]

Utilisation Linstruction HELP permet daccder la documentation SQL Anywhere


Studio.
Vous pouvez spcifier la rubrique voulue. Si rubrique est un mot rserv, il
doit tre plac entre apostrophes. Dans certains formats daide, il est
impossible de spcifier la rubrique. Dans ce cas, un lien avec la page
daccueil de la documentation en ligne est fourni.
Autorisations Aucune.
Effets secondaires Aucun.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non applicable.

539
Instruction IF
Description Contrler lexcution conditionnelle dinstructions SQL.
Syntaxe IF condition_recherche THEN liste_instructions
[ ELSEIF { condition_recherche | type_opration } THEN liste_instructions
] ...
[ ELSE liste_instructions ]
END IF
Utilisation IF est une instruction de contrle qui permet dexcuter de manire
conditionnelle la premire liste dinstructions SQL dont largument
condition_recherche est valu la valeur TRUE. Si aucun argument
condition_recherche ne satisfait ce critre et quune clause ELSE est incluse,
la liste_instructions de la clause ELSE est excute.
Lexcution se poursuit la premire instruction qui suit loprateur END IF.

Linstruction IF est diffrente de lexpression IF


Ne confondez pas la syntaxe de linstruction IF avec celle de lexpression
IF.
Pour plus dinformations sur lexpression IF, reportez-vous la section
Expressions IF la page 19.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction BEGIN la page 324
Utilisation des procdures, des triggers et des batchs [ASA - Guide de
lutilisateur SQL, page 701]

Normes et compatibilit SQL/92 Fonctionnalit de module stock de manire permanente.

SQL/99 Fonctionnalit de module stock de manire permanente.


Sybase La syntaxe de linstruction IF Transact-SQL est lgrement
diffrente.
Exemple Lexemple suivant illustre lutilisation de linstruction IF :

540
Chapitre 4. Instructions SQL

CREATE PROCEDURE TopCustomer (OUT TopCompany CHAR(35),


OUT TopValue INT)
BEGIN
DECLARE err_notfound EXCEPTION
FOR SQLSTATE 02000;
DECLARE curThisCust CURSOR FOR
SELECT company_name, CAST( sum(sales_order_items.quantity
*
product.unit_price) AS INTEGER) VALUE
FROM customer
LEFT OUTER JOIN sales_order
LEFT OUTER JOIN sales_order_items
LEFT OUTER JOIN product
GROUP BY company_name;
DECLARE ThisValue INT;
DECLARE ThisCompany CHAR(35);
SET TopValue = 0;
OPEN curThisCust;
CustomerLoop:
LOOP
FETCH NEXT curThisCust
INTO ThisCompany, ThisValue;
IF SQLSTATE = err_notfound THEN
LEAVE CustomerLoop;
END IF;
IF ThisValue > TopValue THEN
SET TopValue = ThisValue;
SET TopCompany = ThisCompany;
END IF;
END LOOP CustomerLoop;
CLOSE curThisCust;
END

541
Instruction IF [T-SQL]
Description Contrler lexcution conditionnelle dune instruction SQL (solution de
remplacement linstruction Watcom-SQL IF).
Syntaxe IF expression
instruction
[ ELSE
[ IF expression ]
instruction]

Utilisation Linstruction conditionnelle IF de Transact-SQL et linstruction


conditionnelle ELSE contrlent chacune lexcution dune seule instruction
ou dune instruction compose unique (comprise entre les mots-cls BEGIN
et END).
A la diffrence de linstruction IF Watcom-SQL, il ny a pas de clause
THEN dans linstruction IF Transact-SQL. La version Transact-SQL
nutilise pas les mots-cls ELSEIF et END IF.
Autorisations Aucune.
Effets secondaires Aucun.
Normes et compatibilit SQL/92 Extension de Transact-SQL.
SQL/99 Extension de Transact-SQL.
Sybase Adaptive Server Enterprise supporte linstruction IF
Transact-SQL.
Exemple Lexemple suivant illustre lutilisation de linstruction IF Transact-SQL :
IF (SELECT max(id) FROM sysobjects) < 100
RETURN
ELSE

PRINT These are the user-created objects


SELECT name, type, id
FROM sysobjects
WHERE id < 100
END

Les deux blocs dinstructions ci-aprs illustrent la compatibilit entre


Transact-SQL et Watcom-SQL :

542
Chapitre 4. Instructions SQL

/* Transact-SQL IF statement */
IF @v1 = 0
PRINT 0
ELSE IF @v1 = 1
PRINT 1
ELSE
PRINT other
/* Watcom-SQL IF statement */
IF v1 = 0 THEN
PRINT 0
ELSEIF v1 = 1 THEN
PRINT 1
ELSE
PRINT other
END IF

543
Instruction INCLUDE [ESQL]
Description Inclure un fichier dans un programme source pour quil soit balay par le
prprocesseur SQL.
Syntaxe INCLUDE nom_fichier

nom_fichier : SQLDA | SQLCA | chane

Utilisation Linstruction INCLUDE ressemble beaucoup la directive #include du


prprocesseur C. Le prprocesseur SQL lit un fichier source SQL intgr et
remplace toutes les instructions par du code source en langage C. Si un
fichier contient des informations ncessaires au prprocesseur SQL,
incluez-le avec linstruction SQL INCLUDE intgre.
Deux noms de fichier sont spcifiquement reconnus : SQLCA et SQLDA.
Linstruction suivante doit apparatre avant toute instruction Embedded SQL
dans tous les fichiers source Embedded SQL :
EXEC SQL INCLUDE SQLCA;

Celle-ci doit apparatre lendroit du programme C o seffectuent les


dclarations de variables statiques. De nombreuses instructions en
Embedded SQL requirent des variables (invisibles pour le programmeur)
qui sont dclares par le prprocesseur SQL la position de linstruction
INCLUDE SQLCA. Si vous employez des SQLDA, vous devez inclure le
fichier SQLDA.
Autorisations Aucune.
Effets secondaires Aucun.
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.
SQL/99 Fonction principale.

Sybase Prise en charge par Open Client/Open Server.

544
Chapitre 4. Instructions SQL

Instruction INPUT [Interactive SQL]


Description Importer des donnes dans une table de base de donnes partir dun fichier
externe ou du clavier.
Syntaxe INPUT INTO [ propritaire.]nom_table
[ FROM nom_fichier | PROMPT ]
[ FORMAT format_entre ]
[ ESCAPE CHARACTER caractre ]
[ ESCAPES { ON | OFF }
[ BY ORDER | BY NAME ]
[ DELIMITED BY chane ]
[ COLUMN WIDTHS (entier , . . .) ]
[ NOSTRIP ]
[ ( nom_colonne, . . . ) ]
[ ENCODING codage ]

format_entre :
ASCII | DBASE | DBASEII | DBASEIII
| EXCEL | FIXED | FOXPRO | LOTUS
codage : identificateur ou chane

Paramtres Clause FROM Le nom_fichier est transmis au serveur sous forme de


chane entre guillemets. La chane doit donc obir aux mmes rgles de
formatage que les autres chanes SQL. En particulier :
Pour indiquer le chemin daccs un rpertoire, doublez la barre oblique
inverse ( \). Linstruction permettant de charger des donnes dans la table
employee partir du fichier c:\temp\input.dat est la suivante :
INPUT INTO employee
FROM c:\\temp\\input.dat

Le nom du chemin daccs est relatif lordinateur sur lequel Interactive


SQL est en cours dexcution.
Clause PROMPT La clause PROMPT permet lutilisateur de saisir des
valeurs pour chaque colonne dune ligne. En mode fentre, une bote de
dialogue saffiche dans laquelle lutilisateur peut saisir les valeurs de la
nouvelle ligne. Si lutilisateur excute Interactive SQL sur la ligne de
commande, il sera invit saisir la valeur de chaque colonne sur la ligne de
commande.
Clause FORMAT Chaque ensemble de valeurs doit tre au format indiqu
par la clause FORMAT ou, en labsence de cette dernire, par linstruction
SET OPTION INPUT_FORMAT. Une fois les donnes saisies saffiche
alors une bote de dialogue permettant lutilisateur de saisir une ligne de
donnes par ligne, dans le format dentre.

545
Certains formats de fichiers contiennent des informations sur les noms et les
types de colonne. Ces informations permettent linstruction INPUT de
crer la table de base de donnes si elle nexiste pas dj. Cest l un moyen
trs facile de charger des donnes dans la base. Les formats qui fournissent
suffisamment dinformations pour crer la table sont les suivants : DBASEII,
DBASEIII, FOXPRO et LOTUS.
Les donnes en entre dun fichier de commandes se terminent par une ligne
contenant la chane END. Les donnes en entre dun fichier standard se
terminent la fin du fichier.
Les formats dentre autoriss sont les suivants :
ASCII Les lignes dentre sont supposes tre des caractres ASCII,
chaque ligne du fichier correspondant une ligne de la table, avec des
valeurs spares par des virgules. Les chanes alphabtiques peuvent tre
places entre apostrophes ou entre guillemets. Les chanes contenant des
virgules doivent figurer soit entre apostrophes, soit entre guillemets. Si la
chane en elle-mme contient des apostrophes ou des guillemets, il faut
doubler le caractre apostrophe ou guillemet utilis lintrieur de la
chane. Vous pouvez aussi utiliser la clause DELIMITED BY pour
spcifier une chane de dlimiteur diffrente de celle par dfaut (qui est
une virgule).
Trois autres squences spciales sont galement reconnues. Les deux
caractres \n reprsentent le caractre de nouvelle ligne, \\reprsente une
ligne unique (\) et la squence \xDD reprsente le caractre avec le code
hexadcimal DD.

DBASE Le fichier est au format dBASE II ou dBASE III. Interactive


SQL tente de dterminer le format daprs les informations sur le fichier.
Si la table nexiste pas, elle est cre.

DBASEII Le fichier est au format dBASE II. Si la table nexiste pas, elle
est cre.
DBASEIII Le fichier est au format dBASE III. Si la table nexiste pas,
elle est cre.

EXCEL Le fichier dentre est au format Microsoft Excel 2.1. Si la table


nexiste pas, elle est cre.
FIXED Les lignes dentre sont dans un format fixe. Vous pouvez
spcifier la largeur des colonnes laide de la clause COLUMN
WIDTHS. Si la largeur des colonnes nest pas spcifie, elle doit tre
identique au nombre de caractres maximal requis par toute valeur du
type de colonne de la base de donnes correspondante.

546
Chapitre 4. Instructions SQL

Le format FIXED ne peut pas tre utilis avec des colonnes binaires
contenant des squences de caractres de nouvelle ligne ou de fin de
fichier imbriqus.
FOXPRO Le fichier est au format FoxPro. Si la table nexiste pas, elle
est cre.
LOTUS Le fichier est au format WKS de Lotus. INPUT suppose que la
premire ligne du format WKS de Lotus contient les noms de colonne. Si
la table nexiste pas, elle est cre. Dans ce cas, les types et les tailles des
colonnes cres peuvent ne pas tre corrects, parce que les informations
du fichier concernent une cellule et non une colonne.
Clause ESCAPE CHARACTER Le caractre dchappement associ aux
codes hexadcimaux et aux symboles est, par dfaut, la barre oblique inverse
(\). \x0A, par exemple, reprsente le caractre de changement de ligne.
Vous pouvez modifier ce caractre dchappement laide de la clause
ESCAPE CHARACTER. Par exemple, pour utiliser le point dexclamation
comme caractre dchappement, saisissez :
... ESCAPE CHARACTER !

Le caractre dchappement ne peut tre quun caractre dun seul octet.


Clause ESCAPES Si ESCAPES est active (ON ; valeur par dfaut), les
caractres suivant la barre oblique inverse sont reconnus et interprts
comme des caractres spciaux par le serveur de base de donnes. La
combinaison \n reprsente un caractre de changement de ligne ; vous
pouvez galement inclure dautres caractres dans les donnes sous forme de
codes ASCII hexadcimaux, tels que \x09 pour le caractre de tabulation.
Deux barres obliques inverses conscutives ( \\) sont interprtes comme une
seule. Une barre oblique inverse suivie dun caractre autre que n, x, X ou
\est interprt comme deux caractres spars. Par exemple, \q insre un
caractre barre oblique inverse et la lettre q.
Clause BY Permet lutilisateur de dterminer si les colonnes du fichier
dentre doivent tre associes celles de la table selon leur position dans les
listes (paramtre ORDER, employ par dfaut) ou selon leur nom (paramtre
NAME). Certains formats dentre ne fournissent pas dinformations sur les
noms de colonne dans le fichier. NAME nest utilisable quavec les formats
qui offrent cette particularit, cest--dire ceux qui permettent la cration
automatique de tables : DBASEII, DBASEIII, FOXPRO et LOTUS.
Clause DELIMITED BY Permet de spcifier la chane employer comme
dlimiteur dans un format dentre ASCII.
Clause COLUMN WIDTHS Ne peut tre spcifi que pour les formats

547
FIXED. Ce paramtre indique la largeur des colonnes du fichier dentre.
Sil est omis, les largeurs sont dtermines en fonction du type des colonnes
de la base de donnes. Nutilisez pas cette clause pour linsertion de donnes
de type LONG VARCHAR ou BINARY dans un format FIXED.
Clause NOSTRIP Dans le format ASCII, les blancs en fin de chane sont
normalement supprims des chanes non dlimites avant linsertion de la
valeur. Vous pouvez dsactiver cette suppression automatique laide de
NOSTRIP. Dans le cas des chanes dlimites (par des guillemets ou des
apostrophes), les blancs ne sont jamais supprims, mme si loption est
spcifie. Les blancs gauche sont supprims des chanes non dlimites,
quelle que soit la configuration de loption NOSTRIP.
Si le fichier ASCII contient des entres dont une colonne semble tre dfinie
avec la valeur NULL, cette colonne est traite comme nulle. Si la colonne
concerne ne peut pas tre dfinie avec la valeur NULL, linstruction y
insre un zro sil sagit dune colonne numrique ou une chane vide dans
le cas dune colonne de type caractres.
Clause ENCODING Largument codage permet de spcifier le codage
utilis pour lire le fichier. La clause ENCODING ne peut tre utilise
quavec le format ASCII.
Si largument codage nest pas spcifi, Interactive SQL dtermine la page
de code qui est utilise pour lire le fichier de la manire suivante (les valeurs
de la page de code se prsentant en premier dans la liste ont la priorit sur
les suivantes) :
la page de code spcifie avec loption DEFAULT_ISQL_ENCODING
(si cette option est dfinie) ;
la page de code spcifie avec loption -codepage lors du dmarrage
dInteractive SQL ;
la page de code par dfaut de lordinateur sur lequel Interactive SQL est
excut.
Pour plus dinformations sur Interactive SQL et les codages,
reportez-vous la section Option DEFAULT_ISQL_ENCODING
[Interactive SQL] [ASA - Guide dadministration, page 707].
Utilisation Linstruction INPUT permet dimporter de manire efficace des quantits
importantes de donnes dans une table de base de donnes. Les lignes en
entre sont soit saisies par lutilisateur dans une fentre dentre (si
PROMPT est spcifi), soit lues dans un fichier (si FROM nom_fichier est
spcifi). Si PROMPT et FROM ne sont pas spcifis, les donnes sont lues
partir du fichier de commandes qui contient linstruction INPUT, ce qui
peut mme tre effectu directement depuis lditeur Interactive SQL. Dans

548
Chapitre 4. Instructions SQL

ce cas, les donnes en entre se terminent par une ligne contenant la chane
END uniquement.
Si une liste de colonnes est spcifie pour un format dentre, les donnes
sont insres dans ces colonnes de la table. Par dfaut, linstruction INPUT
suppose que les valeurs de colonne du fichier dentre apparaissent dans le
mme ordre que dans la dfinition de la table de base de donnes. Si lordre
des colonnes du fichier dentre est diffrent, vous devez indiquer lordre
rel des colonnes du fichier dentre la fin de linstruction INPUT.
Par exemple, si vous crez une table avec linstruction suivante :
CREATE TABLE inventory (
quantity INTEGER,
item VARCHAR(60)
)

puis importez des donnes ASCII partir du fichier dentre stock.txt qui
contient la valeur name avant la valeur quantity,
Shirts, 100
Shorts, 60

vous devez indiquer lordre rel des colonnes du fichier dentre la fin de
linstruction INPUT pour les donnes qui doivent tre insres correctement
:
INPUT INTO inventory
FROM stock.txt
FORMAT ASCII
(item, quantity);

Par dfaut, lexcution de linstruction INPUT est interrompue ds que


celle-ci tente dinsrer une ligne qui gnre une erreur. Vous pouvez traiter
les erreurs de diverses manires en dfinissant les options ON_ERROR et
CONVERSION_ERROR (reportez-vous loption SET). Si la valeur des
chanes entres est tronque, Interactive SQL affiche un avertissement dans
le volet Messages. Les colonnes NOT NULL qui ne contiennent aucune
valeur sont soit initialises zro si elles sont de type numrique, soit
dfinies avec une chane vide dans les autres cas. INPUT tente dinsrer une
ligne de valeur NULL si le fichier dentre contient une ligne vide.
Autorisations Autorisation INSERT sur la table ou la vue.
Effets secondaires Aucun.
Voir aussi Instruction OUTPUT [Interactive SQL] la page 582
Instruction INSERT la page 551
Instruction UPDATE la page 683
Instruction DELETE la page 465

549
Instruction SET OPTION la page 644
Instruction LOAD TABLE la page 563
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non applicable.


Exemple Exemple dinstruction INPUT traitant un fichier texte ASCII :
INPUT INTO employee
FROM new_emp.inp
FORMAT ASCII;

550
Chapitre 4. Instructions SQL

Instruction INSERT
Description Insrer une seule ligne (syntaxe 1) ou un ensemble de lignes slectionnes
dun autre emplacement de la base de donnes (syntaxe 2) dans une table.
Syntaxe 1 INSERT [ INTO ] [ propritaire.]nom_table [ ( nom_colonne, . . . ) ]
[ ON EXISTING { ERROR | SKIP | UPDATE } ]
VALUES ( expression | DEFAULT, . . . )

Syntaxe 2 INSERT [ INTO ] [ propritaire.]nom_table [ ( nom_colonne, . . . ) ]


[ ON EXISTING { ERROR | SKIP | UPDATE } ]
[ WITH AUTO NAME ]
instruction_select
Paramtres Clause WITH AUTO NAME WITH AUTO NAME ne sapplique qu la
syntaxe 2. Si vous spcifiez WITH AUTO NAME, les noms des lments de
linstruction SELECT dterminent quelle colonne appartiennent les
donnes. Les lments de linstruction SELECT doivent tre soit des
rfrences de colonnes, soit des expressions avec alias. Les colonnes de
destination non dfinies dans linstruction SELECT prendront leur valeur
par dfaut. Cela savre utile lorsque le nombre de colonnes de la table de
destination est trs grand.
Clause ON EXISTING La clause ON EXISTING de linstruction INSERT
sapplique aux deux syntaxes. Elle met jour les lignes existantes dune
table par de nouvelles valeurs, en fonction de la consultation de la cl
primaire. Cette clause ne peut tre utilise que sur des tables qui contiennent
une cl primaire. Une erreur de syntaxe serait gnre si vous tentiez
dutiliser cette clause sur des tables dpourvues de cls primaires. Vous ne
pouvez pas insrer de valeurs dans une table Proxy avec la clause ON
EXISTING.
Si la clause ON EXISTING est spcifie, le serveur recherche une cl
primaire pour chaque ligne dentre. Si la ligne correspondante nexiste pas
encore dans la table, une nouvelle ligne est insre comme dhabitude. Pour
les lignes qui existent dj dans la table, vous pouvez choisir dignorer la
ligne dentre en mode non dtaill (SKIP), de mettre jour les valeurs dans
la liste dentre (UPDATE) ou de gnrer un message derreur pour les
valeurs de cl en double (ERROR).
Par dfaut, si vous ne spcifiez pas ON EXISTING, toute tentative
dinsertion de lignes dans une table o la ligne existe dj provoque une
erreur de valeur de cl en double. Cela revient spcifier ON EXISTING
ERROR.
Utilisation Linstruction INSERT permet dajouter une nouvelle ligne dans une table de
base de donnes.

551
Syntaxe 1 Insre une seule ligne, avec les valeurs de lexpression
spcifie. Le mot-cl DEFAULT permet dinsrer la valeur par dfaut pour la
colonne considre. Si une liste de noms de colonne est fournie, chaque
valeur est insre dans chacune des colonnes indiques. Si cette liste est
omise, les valeurs sont insres dans les colonnes selon lordre de cration
de ces dernires (cest--dire lordre dans lequel sont extraites avec SELECT
*). La ligne est insre dans la table une position alatoire. (Dans les bases
de donnes relationnelles, les tables ne sont pas tries.)
Syntaxe 2 Excute une insertion massive dans une table partir des
rsultats dune instruction SELECT gnrale. Ces insertions sont effectues
dans un ordre alatoire, sauf si linstruction SELECT comporte une clause
ORDER BY.
Les colonnes de la liste de slection sont associes soit celles dfinies dans
la liste de colonnes, soit, squentiellement, selon lordre de cration de ces
dernires.
Les insertions sont possibles dans les vues, si la spcification de requte
dfinissant la vue est susceptible dtre mise jour et ne comporte quune
table dans la clause FROM.
Une vue non susceptible dtre mise jour de faon inhrente consiste en
une expression de requte ou une spcification de requte contenant un des
lments suivants :
clause DISTINCT

clause GROUP BY
Fonction dagrgat
Un lment liste_slection qui nest pas une table de base de donnes.

Les chanes de caractres insres dans les tables sont toujours enregistres
dans la casse utilise pour les saisir, que la base de donnes fasse ou non la
distinction majuscules/minuscules. Ainsi, la chane Value sera toujours
conserve dans la base avec un V comme majuscule initiale et des
minuscules pour les autres lettres. Les instructions SELECT renvoient la
chane sous la forme Value. En revanche, si la base de donnes ne fait pas la
distinction majuscules/minuscules, Value est identique value, VALUE,
etc., dans toutes les comparaisons. De plus, si une cl primaire une colonne
contient dj lentre Value, linsertion (INSERT) de value est refuse, car
la cl primaire ne serait plus unique.
Linsertion dune quantit importante de donnes laide de linstruction
INSERT entrane galement la mise jour des statistiques de colonne.

552
Chapitre 4. Instructions SQL

Conseils relatif aux performances


Pour insrer plusieurs lignes dans une table, il est conseill, chaque fois
que possible, de dclarer un curseur puis de lutiliser pour linsertion. Cette
mthode est plus efficace que lexcution de plusieurs instructions INSERT
distinctes. Avant dinsrer les donnes, vous pouvez spcifier le pourcen-
tage de chaque page de table qui doit rester libre pour dultrieures mises
jour. Pour plus dinformations, reportez-vous la section Instruction
ALTER TABLE la page 305.
Autorisations Autorisation INSERT sur la table.
Effets secondaires Aucun.
Voir aussi Instruction INPUT [Interactive SQL] la page 545
Instruction LOAD TABLE la page 563
Instruction UPDATE la page 683
Instruction DELETE la page 465
Instruction PUT [ESQL] la page 594
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme. Fonctionnalit dentre de
gamme.
SQL/99 Fonction principale. Fonctionnalit dentre de gamme.

Sybase Prise en charge par Adaptive Server Enterprise.


Exemples Ajout dun dpartement Eastern Sales dans la base de donnes :
INSERT
INTO department ( dept_id, dept_name )
VALUES ( 230, Eastern Sales )

Cration de la table dept_head et insertion du nom des responsables, suivi du


nom du service quils dirigent :
CREATE TABLE dept_head(
pk int primary key default autoincrement,
dept_name varchar(128),
manager_name varchar (128) );
INSERT
INTO dept_head (manager_name, dept_name)
SELECT emp_fname || || emp_lname, dept_name
FROM employee JOIN department
ON emp_id = dept_head_id

Cration de la table dept_head et insertion du nom des responsables, suivi du


nom du service quils dirigent, laide de la syntaxe WITH AUTO NAME.

553
CREATE TABLE dept_head(
pk int primary key default autoincrement,
dept_name varchar(128),
manager varchar (128) );
INSERT
INTO dept_head WITH AUTO NAME
SELECT emp_fname || || emp_lname AS manager,
dept_name
FROM employee JOIN department
ON emp_id = dept_head_id

Cration de la table mytab et remplissage laide de la syntaxe WITH


AUTO NAME.
CREATE TABLE mytab(
pk int primary key default autoincrement,
table_name char(128),
len int );
INSERT into mytab WITH AUTO NAME
SELECT
length(t.table_name) AS len,
t.table_name
FROM SYS.SYSTABLE t
WHERE table_id<=10

554
Chapitre 4. Instructions SQL

Instruction INSTALL JAVA


Description Rendre les classes Java accessibles lintrieur dune base de donnes.
Syntaxe INSTALL JAVA
[ NEW | UPDATE ]
[ JAR nom_jar ]
FROM { FILE nom_fichier | expression }

Paramtres Mot-cl NEW | UPDATE Si vous spcifiez le mode dinstallation NEW,


toutes les classes Java rfrences doivent tre de nouvelles classes, et non
des mises jour de classes dj installes. Une erreur se produit si une classe
du mme nom existe dans la base de donnes et que le mode NEW est utilis.
Si vous spcifiez UPDATE, les classes Java rfrences peuvent comprendre
les remplacements des classes Java qui sont dj installes dans la base de
donnes spcifie.
Si mode_installation est omis, la valeur par dfaut est NEW.
Clause JAR Si cette option est spcifie, nom_fichier doit dsigner un
fichier Jar. Les fichiers JAR portent gnralement lextension .jar ou .zip.
Les fichiers Jar et zip installs peuvent tre compacts ou dcompacts.
Si loption JAR est spcifie, le fichier Jar est conserv sous forme de fichier
Jar une fois que les classes quil contient ont t installes. Ce fichier Jar est
le fichier Jar associ chacune de ces classes. Les fichiers Jar installs dans
une base de donnes laide de loption jar sont appels fichiers jars
conservs de la base de donnes.
nom_jar est une chane de caractres, pouvant atteindre 255 octets de long.
nom_jar permet didentifier le fichier Jar conserv dans les instructions
INSTALL JAVA, UPDATE et REMOVE JAVA suivantes.
Clause FROM FILE Spcifie lemplacement des classes Java installer.
Les formats supports pour nom_fichier incluent des noms de fichiers
intgralement qualifis, tels que c:\libs\jarname.jar et
/usr/u/libs/jarname.jar , ainsi que des noms de fichiers relatifs, qui
dpendent du rpertoire de travail courant du serveur de base de donnes.
Loption nom_fichier doit identifier soit un fichier de classe, soit un fichier
Jar.
Clause FROM expression Les expressions doivent gnrer un type binaire
dont la valeur contient un fichier de classe ou un fichier Jar correct.
Utilisation La premire fois quune classe est utilise, la dfinition de chaque classe est
charge par chaque machine virtuelle de la connexion. Lorsque vous

555
installez (INSTALL) une classe, la machine virtuelle de la connexion est
automatiquement redmarre. Par consquent, vous avez un accs immdiat
la nouvelle classe, quel que soit le mode_installation de INSTALL : NEW
ou UPDATE. Comme la machine virtuelle est redmarre, toutes les valeurs
stockes dans les variables java statiques sont perdues et toutes les variables
SQL avec les types de classe java sont supprimes.
Pour les autres connexions, la nouvelle classe est charge lorsque la machine
virtuelle accde la classe pour la premire fois, la fois suivante. Si celle-ci
est dj charge par une machine virtuelle, la nouvelle classe napparat pour
la connexion correspondante que lorsque la machine virtuelle est redmarre
(par exemple, laide dun STOP JAVA et START JAVA).
Autorisations Vous devez dtenir les droits DBA pour pouvoir excuter linstruction
INSTALL JAVA.
Toutes les classes installes peuvent tre rfrences de nimporte quelle
manire par tout utilisateur.
Non prise en charge par Windows CE.
Voir aussi Instruction REMOTE JAVA la page 603
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

Exemple Linstruction suivante installe la classe Java nomme Demo, cre par
lutilisateur, en spcifiant le nom de fichier et lemplacement de la classe :
INSTALL JAVA NEW
FROM FILE D:\JavaClass\Demo.class

Aprs installation, la classe est rfrence avec son nom. Son chemin
daccs dorigine nest plus utilis. Par exemple, linstruction ci-dessous
utilise la classe installe dans linstruction prcdente.
create variable d Demo

Si la classe Demo tait membre du package sybase.work, le nom


intgralement qualifi de la classe doit tre utilis, par exemple :
CREATE VARIABLE d sybase.work.Demo

Linstruction ci-dessous installe toutes les classes contenues dans un fichier


.zip et les associe, lintrieur dune base de donnes, un nom de fichier
JAR.

556
Chapitre 4. Instructions SQL

INSTALL JAVA
JAR Widgets
FROM FILE C:\Jars\Widget.zip

De mme, lemplacement du fichier .zip nest pas conserv et les classes


doivent tre rfrences laide du nom de classe intgralement qualifi
(nom du package et nom de la classe).

557
Opration INTERSECT
Description Calcule lintersection entre les jeux de rsultats dau moins deux requtes.
Syntaxe instruction_select
INTERSECT [ ALL | DISTINCT ] instruction_select
[ INTERSECT [ ALL | DISTINCT ] instruction_select ]
[ ORDER BY [ entier | nom_expression_liste_slection ] [ ASC | DESC ], . . .
]

Utilisation Il est possible dobtenir sous forme de rsultat unique lintersection entre les
jeux de rsultats de plusieurs instructions SELECT par le biais
dINTERSECT ou dINTERSECT ALL. INTERSECT DISTINCT est
identique INTERSECT.
Les instructions SELECT doivent comporter chacune le mme nombre
dlments dans la liste de slection et ne pas inclure de clause ORDER BY.
Les rsultats dINTERSECT sont identiques ceux dINTERSECT ALL,
sauf quavec INTERSECT, les lignes en double sont limines avant le
calcul de lintersection entre les jeux de rsultats.
Si des lments correspondants dans deux listes de slection sont dots de
types de donnes diffrents, Adaptive Server Anywhere choisit un type de
donnes pour la colonne rsultat correspondante et convertit
automatiquement les colonnes de chaque instruction SELECT de faon
approprie. La premire spcification de requte de lUNION sert
dterminer les noms faire correspondre avec la clause ORDER BY.
Les noms de colonne affichs sont les mmes que ceux qui le seraient pour
la premire instruction SELECT. Une autre faon de personnaliser les noms
de colonne du jeu de rsultats consiste utiliser la clause WITH sur
linstruction SELECT.
Autorisations Vous devez dtenir lautorisation SELECT pour chacune des instructions
SELECT.
Effets secondaires Aucun.
Voir aussi Opration EXCEPT la page 489
Opration UNION la page 676
Normes et compatibilit SQL/92 Entre de gamme.
SQL/99 Fonction F302.
Sybase Prise en charge par Adaptive Server Enterprise.
Exemple Pour des exemples dutilisation dINTERSECT, reportez-vous la section

558
Chapitre 4. Instructions SQL

Oprateurs ensemblistes et NULL [ASA - Guide de lutilisateur SQL,


page 281].

559
Instruction LEAVE
Description Quitter une instruction compose ou une boucle.
Syntaxe LEAVE tiquette_instruction

Voir aussi Instruction LOOP la page 574


Instruction FOR la page 507
Instruction BEGIN la page 324
Utilisation des procdures, des triggers et des batchs [ASA - Guide de
lutilisateur SQL, page 701]

Utilisation Linstruction LEAVE est une instruction de contrle qui vous permet de
sortir dune instruction compose ou dune boucle avec tiquette.
Lexcution reprend la premire instruction suivant linstruction compose
ou la boucle.
Linstruction compose qui constitue le corps dune procdure ou dun
trigger est dote dune tiquette implicite identique au nom de la procdure
ou du trigger.
Autorisations Aucune.
Effets secondaires Aucun.
Normes et compatibilit SQL/92 Fonctionnalit de module stock de manire permanente.
SQL/99 Fonctionnalit de module stock de manire permanente.
Sybase Non prise en charge par Adaptive Server Enterprise.
Linstruction BREAK fournit la mme fonctionnalit pour les procdures
compatibles Transact-SQL.
Exemple Lextrait ci-aprs prsente un exemple dutilisation de linstruction LEAVE
pour sortir dune boucle :
SET i = 1;
lbl:
LOOP
INSERT
INTO Counters ( number )
VALUES ( i );
IF i >= 10 THEN
LEAVE lbl;
END IF;
SET i = i + 1
END LOOP lbl

Cet extrait utilise une instruction LEAVE dans une boucle imbrique :

560
Chapitre 4. Instructions SQL

outer_loop:
LOOP
SET i = 1;
inner_loop:
LOOP
...
SET i = i + 1;
IF i >= 10 THEN
LEAVE outer_loop
END IF
END LOOP inner_loop
END LOOP outer_loop

561
Instruction LOAD STATISTICS
Description Cette instruction charge des statistiques dans la table systme
SYSCOLSTAT. Lutilitaire de ligne de commande dbunload sen sert pour
dcharger les statistiques de colonne de lancienne base de donnes. Elle ne
doit pas tre utilise manuellement.
Syntaxe LOAD STATISTICS [ [ propritaire.]nom_table.]nom_colonne
id_format, densit, max_pas, pas_rels, valeurs_pas, frquences

Paramtres id_format Champ interne permettant de dterminer le format du reste de la


ligne dans la table systme SYSCOLSTAT.
densit Estimation de la slectivit moyenne pondre dune valeur
unique de la colonne, ne tenant pas compte de la slectivit des valeurs
uniques leves stockes dans la ligne.
max_pas Nombre maximal de pas autoriss dans lhistogramme.
pas_rels Nombre de pas rellement utiliss.
valeurs_pas Valeurs limites des pas de lhistogramme.
frquences Slectivit des pas de lhistogramme.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Aucun.
Voir aussi Table systme SYSCOLSTAT la page 723
Dchargement dune base de donnes avec lutilitaire dbunload [ASA -
Guide dadministration, page 643]
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non applicable.

562
Chapitre 4. Instructions SQL

Instruction LOAD TABLE


Description Importer en mode bulk des donnes dun fichier externe au format ascii dans
une table de base de donnes. Les insertions ne sont pas enregistres dans le
journal de transactions, avec risque de perte des donnes en cas de panne et
de non-utilisation de cette instruction avec des bases de donnes
SQL Remote ou des bases de donnes distantes MobiLink.
Syntaxe LOAD [ INTO ] TABLE [ propritaire.]nom_table [ ( nom_colonne, . . . ) ]
FROM nom_fichier
[ option_chargement ...
[ options_restriction_statistiques ]

option_chargement :
CHECK CONSTRAINTS { ON | OFF }
| COMPUTES { ON | OFF }
| DEFAULTS { ON | OFF }
| DELIMITED BY chane
| ESCAPE CHARACTER caractre
| ESCAPES { ON | OFF }
| FORMAT { ASCII | BCP }
| HEXADECIMAL {ON | OFF}
| ORDER {ON | OFF}
| PCTFREE pourcentage_espace_libre
| QUOTES { ON | OFF }
| SKIP entier
| STRIP { ON | OFF }
| WITH CHECKPOINT { ON | OFF }

options_restriction_statistiques :
STATISTICS { ON [ ALL COLUMNS ] | OFF | ON KEY CO-
LUMNS | ON ( liste_
colonnes ) }

nom_fichier : { chane | variable }

Paramtres Nom-colonne Toutes les colonnes qui ne sont pas prsentes dans la liste
des colonnes prennent la valeur NULL si loption DEFAULTS est dsactive
(OFF). Si DEFAULTS est active (ON) et si la colonne a une valeur par
dfaut, celle-ci est utilise. Si DEFAULTS est dsactive et si une colonne
nacceptant pas les valeurs NULL est omise de la liste, le moteur tente de
convertir la chane vide en type de colonne.
Lorsquune liste de colonnes est spcifie, elle comprend les colonnes qui
sont censes se trouver dans le fichier dans leur ordre dapparition. Les noms
de colonnes ne peuvent pas tre dupliqus. Les noms de colonnes qui
napparaissent pas dans la liste prennent la valeur null/zro/vide ou
DEFAULT (en fonction des colonnes acceptant les valeurs NULL, du type

563
de donnes et de ltat on/off de DEFAULTS). Les colonnes existant dans le
fichier dentre qui doivent tre ignores par LOAD TABLE peuvent tre
spcifies laide du nom de colonne filler().
Option FROM La chane_nom_fichier est transmise au serveur sous forme
de chane. La chane doit donc obir aux mmes rgles de formatage que les
autres chanes SQL. En particulier :
Pour indiquer des chemins de rpertoire, doublez la barre oblique inverse
( \). Linstruction permettant de charger des donnes dans la table
employe partir du fichier c:\temp\input.dat est la suivante :
LOAD TABLE employee
FROM c:\\temp\\input.dat ...

Le chemin daccs dpend du serveur de base de donnes et non de


lapplication cliente. Si vous excutez linstruction sur un serveur de base
de donnes dune autre machine, les noms de rpertoire renvoient aux
rpertoires de la machine serveur, et non ceux de la machine cliente.
Vous pouvez utiliser les chemins daccs UNC pour le chargement de
donnes partir de fichiers stocks sur des machines autres que le
serveur. Par exemple, sur un rseau Windows 95 ou Windows NT, vous
pouvez recourir linstruction suivante pour charger des donnes partir
dun fichier de la machine cliente :
LOAD TABLE employee
FROM \\\\client\\temp\\input.dat

Option CHECK CONSTRAINTS Par dfaut, loption CHECK


CONSTRAINTS est dfinie avec la valeur ON. Lutilitaire Dchargement
dune base de donnes crase les instructions LOAD TABLE lorsquelle est
dfinie avec la valeur OFF.
Lorsque loption CHECK CONSTRAINTS est dfinie OFF, les contraintes
de vrification sont dsactives. Cette option est utile, par exemple lors de la
reconstruction des bases de donnes. Si les contraintes de vrification dune
table appellent des fonctions dfinies par lutilisateur mais pas encore cres,
la reconstruction choue, sauf si loption a pralablement t dfinie OFF.
Option COMPUTES Par dfaut, cette option est active (ON). Lattribution
de la valeur ON COMPUTES permet un nouveau calcul des colonnes
calcules.
Lattribution de la valeur OFF COMPUTES dsactive les nouveaux calculs
des colonnes calcules. Cette option est utile, par exemple, si vous
reconstituez une base de donnes et quune table comporte une colonne
calcule faisant appel une fonction dfinie par lutilisateur et qui na pas

564
Chapitre 4. Instructions SQL

encore t cre. La reconstitution chouera, sauf si cette option a la valeur


OFF.
Lutilitaire de dchargement (dbunload) crit des instructions LOAD TABLE
avec loption COMPUTES rgle sur OFF.
Option DEFAULTS Par dfaut, cette option est dsactive (OFF). Si
DEFAULTS est dsactive (OFF), la valeur NULL sera affecte aux
colonnes ne figurant pas dans la liste. Si DEFAULTS est dsactive et si une
colonne nacceptant pas les valeurs NULL est omise de la liste, le serveur de
base de donnes tente de convertir la chane vide en type de colonne. Si
DEFAULTS est active (ON) et si la colonne a une valeur par dfaut, celle-ci
est utilise.
Option DELIMITED BY Le dlimiteur de colonne est, par dfaut, la
virgule. Vous pouvez spcifier un autre dlimiteur de colonne en spcifiant
une chane. Les mmes conditions de formatage que dans dautres chanes
SQL sappliquent. Les mmes rgles de formatage sappliquent aux autres
chanes SQL. La clause DELIMITED BY se prsente comme suit :
...DELIMITED BY \x09 ...

Vous pouvez dfinir des dlimiteurs comportant jusqu 255 octets. Par
exemple,
...DELIMITED BY ### ...

Option ESCAPE CHARACTER Le caractre dchappement associ aux


caractres enregistrs sous forme de codes hexadcimaux et de symboles est,
par dfaut, la barre oblique inverse (\). \x0A, par exemple, reprsente le
caractre de changement de ligne.
La clause ESCAPE CHARACTER vous permet de modifier le caractre
dchappement. Par exemple, pour utiliser le point dexclamation comme
caractre dchappement, saisissez :
... ESCAPE CHARACTER !

Le caractre dchappement ne peut tre quun caractre dun seul octet.


Option ESCAPES Si ESCAPES est active (ON ; valeur par dfaut), les
caractres suivant la barre oblique inverse sont reconnus et interprts
comme des caractres spciaux par le serveur de base de donnes. La
combinaison \n reprsente un caractre de changement de ligne ; vous
pouvez galement inclure dautres caractres dans des donnes sous forme
de codes ASCII hexadcimaux, tels que \x09 pour le caractre de tabulation.
Deux barres obliques inverses conscutives sont interprtes comme une
seule. Le caractre barre oblique inverse (\) suivi dun caractre autre que n,

565
x, X ou \est interprt comme deux caractres spars. Par exemple, \q
insre un caractre barre oblique inverse et la lettre q.
Option FORMAT Les lignes dentre sont considres comme tant
constitues de caractres ASCII, chaque ligne correspondant une ligne de
table, avec des valeurs spares par un dlimiteur de colonne. Le choix de
BCP (bulk copy) permet limportation de fichiers BCP contenant des objets
BLOB gnrs par ASE.
Option HEXADECIMAL Par dfaut, cette option est active (ON). Dans ce
cas, les valeurs de colonne binaire sont crites sous la forme 0xnnnnnn . . .,
o chaque n correspond un nombre hexadcimal. Il est important de
spcifier HEXADECIMAL ON pour grer des jeux de caractres cods sur
plusieurs octets.
Loption HEXADECIMAL ne peut tre utilise quavec loption FORMAT
ACSII.
Option ORDER La valeur par dfaut de loption ORDER est ON. Si
ORDER a la valeur ON et quun index clusteris a t dclar, LOAD
TABLE trie les donnes dentre selon cet index et insre des lignes dans le
mme ordre. Si les donnes que vous chargez sont dj tries, vous devez
rgler ORDER sur OFF.
Pour plus dinformations, reportez-vous la section Utilisation dindex
clusteriss [ASA - Guide de lutilisateur SQL, page 68].
Option QUOTES Si loption QUOTES est active (ON : valeur par dfaut),
linstruction LOAD recherche un caractre apostrophe. Le caractre QUOTE
est soit une apostrophe soit des guillemets. Le premier caractre de ce type,
apostrophe ou guillemet, rencontr dans une chane est considr comme le
dlimiteur utilis pour cette chane. Les chanes doivent se terminer par une
apostrophe ou un guillemet de fin.
Si QUOTES est dfini sur ON, les caractres dlimiteurs de colonnes
peuvent tre inclus dans les valeurs des colonnes. De mme, les caractres
apostrophes ne sont pas considrs comme faisant partie de la valeur. Ainsi,
la ligne :
123 High Street, Anytown,(715)398-2354

est traite comme ayant deux valeurs, et non trois, malgr la prsence de la
virgule dans ladresse. En outre, les apostrophes dlimitant ladresse ne sont
pas insres dans la base de donnes.
Pour inclure une apostrophe ou un guillemet dans une valeur, QUOTES tant
activ, vous devez doubler le caractre. Dans la ligne suivante, la troisime
colonne contient une valeur qui est une apostrophe :

566
Chapitre 4. Instructions SQL

123 High Street, Anytown,(715)398-2354,

Option SKIP Spcifiez une option SKIP pour ignorer les quelques
premires lignes dun fichier. Largument entier indique le nombre de lignes
ignorer. Vous pouvez utiliser cette option pour ignorer une ligne contenant
les en-ttes de colonne, par exemple. Si le dlimiteur de ligne utilis nest
pas celui par dfaut (nouvelle ligne) et si les donnes contiennent le
dlimiteur de ligne encapsul avec une chane entre guillemets, loption
SKIP risque de ne pas fonctionner correctement.
Option STRIP Si loption STRIP est active (ON ; valeur par dfaut), les
blancs en fin de chane sont supprims avant que les valeurs ne soient
insres. Pour dsactiver loption STRIP, saisissez la clause suivante :
...STRIP OFF ...

Les blancs sont supprims uniquement dans les chanes non dlimites. Les
chanes dlimites conservent leurs blancs. Les blancs gauche sont
tronqus, quelle que soit la configuration de loption STRIP, moins quils
ne soient encadrs par des apostrophes.
Option WITH CHECKPOINT La valeur par dfaut est OFF. Si cette option
est active (ON), un point de reprise est mis une fois lexcution et la
journalisation de linstruction russie.
Si loption If WITH CHECKPOINT ON nest pas spcifie et quune
restauration automatique est ncessaire avant lmission dun point de
reprise (CHECKPOINT), le fichier de donnes utilis pour charger la table
est requis pour que la restauration se droule correctement. Si loption
WITH CHECKPOINT ON est spcifie et quune restauration est
ncessaire, celle-ci dmarrera aprs le point de reprise, et le fichier de
donnes nest pas requis.

Attention
Si vous dfinissez loption de base de donnes CONVERSION_ERROR
sur OFF,vous risquez de charger des donnes errones dans votre table sans
quune erreur soit gnre. Si vous ne spcifiez pas WITH CHECKPOINT
ON et quune restauration de la base de donnes est ncessaire, la restau-
ration risque dchouer dans la mesure o CONVERSION_ERROR est
dfini sur ON (valeur par dfaut) pendant la restauration. Il est recommand
de ne pas charger de tables avec CONVERSION_ERROR dfini sur OFF
et WITH CHECKPOINT ON non spcifi.
Pour plus dinformations, reportez-vous la section Option
CONVERSION_ERROR.

567
Quel que soit le paramtrage de cette option, les fichiers de donnes sont
requis si la base de donnes est endommage et que vous devez avoir recours
une sauvegarde et appliquer le journal de transactions courant.
Option PCTFREE Spcifie le pourcentage despace libre que vous
souhaitez rserver pour chaque page de table. Ce paramtre prvaut sur tout
paramtre permanent dfini pour la table, mais seulement pendant la dure
du chargement.
La valeur pourcentage_espace_libre est un entier compris entre 0 et 100. Ce
dernier indique quaucun espace libre nest rserv pour chaque
page-chacune sera totalement remplie. Une valeur leve signifie que chaque
ligne insre remplit une page elle toute seule.
Pour plus dinformations sur PCTFREE, reportez-vous la section
Instruction CREATE TABLE la page 425.
options_restriction_statistiques Permet de limiter les colonnes pour
lesquelles des statistiques sont gnres lors de lexcution de LOAD
TABLE. Lorsque cette option nest pas utilise, des statistiques sont
gnres pour toutes les colonnes. Ne spcifiez cette option que si vous tes
certain que les statistiques ne seront pas utilises sur certaines colonnes.
Vous pouvez spcifier ON ALL COLUMNS (valeur par dfaut), OFF, ON
KEY COLUMNS ou une liste de colonnes pour lesquelles des statistiques
doivent tre gnres.
Utilisation
Attention
Linstruction LOAD TABLE ne sapplique quau chargement rapide de
grandes quantits de donnes. Elle ncrit pas de lignes individuelles dans
un journal.

Linstruction LOAD TABLE permet une insertion massive efficace dans une
table de base de donnes partir dun fichier ASCII. Linstruction LOAD
TABLE est plus efficace que linstruction INPUT dInteractive SQL. Avant
dinsrer les donnes, vous pouvez spcifier le pourcentage de chaque page
de table qui doit rester libre pour dultrieures mises jour. Pour plus
dinformations, reportez-vous la section Instruction ALTER TABLE la
page 305.
LOAD TABLE pose un verrou exclusif sur la table entire.
Vous pouvez utiliser LOAD TABLE sur une table temporaire globale, mais
la table temporaire doit avoir t cre avec la clause ON COMMIT
PRESERVE ROWS, car LOAD TABLE effectue un COMMIT aprs le
chargement. LOAD TABLE nest pas utilisable sur des tables temporaires
dclares.

568
Chapitre 4. Instructions SQL

Si le fichier ASCII contient des entres dont une colonne semble tre dfinie
avec la valeur NULL, LOAD TABLE considre cette colonne comme nulle.
Si la colonne concerne ne peut pas tre dfinie avec la valeur NULL,
linstruction y insre un zro sil sagit dune colonne numrique ou une
chane vide dans le cas dune colonne de type caractres. LOAD TABLE
ignore les lignes vides dans le fichier dentre.
LOAD TABLE et statistiques Lorsque linstruction LOAD TABLE charge
des donnes, elle collecte des statistiques de colonne pour crer des
histogrammes sur les colonnes de la table. Sil existe dj un histogramme
pour une colonne, LOAD TABLE conserve lhistogramme existant sans en
crer de nouveau. Si vous chargez des donnes dans une table vide, il est
prfrable de commencer par supprimer les statistiques.
LOAD TABLE ne gnre pas de statistiques pour les colonnes qui
contiennent des valeurs NULL pour plus de 90% des lignes charges.
LOAD TABLE enregistre les statistiques sur les tables sous-jacentes en vue
dune utilisation ultrieure. Elle ne les enregistre pas sur les tables
temporaires globales.
LOAD TABLE ajoute uniquement des statistiques si la table comporte au
moins cinq lignes. Si tel est le cas, des histogrammes sont ajouts de la faon
suivante :

Table contenant des Histogramme existant Action effectue


donnes

Oui Oui Mise jour des histo-


grammes existants
Oui Non Aucun histogramme cr

Non Oui Mise jour des histo-


grammes existants

Non Non Cration dhistogrammes


Pour plus dinformations, reportez-vous la section Histogrammes et
estimations de loptimiseur [ASA - Guide de lutilisateur SQL, page 429].
Utilisation de noms de fichiers construits dynamiquement Vous pouvez
excuter une instruction LOAD TABLE avec un nom de fichier construit
dynamiquement en construisant dynamiquement linstruction entire, puis
en lexcutant laide de linstruction EXECUTE IMMEDIATE. Pour plus
dinformations, reportez-vous la section Instruction EXECUTE
IMMEDIATE [SP] la page 495.
Autorisations Les autorisations requises pour excuter une instruction LOAD TABLE

569
dpendent de loption de ligne de commande du serveur -gl, comme suit :
Si loption -gl a la valeur ALL, vous devez tre le propritaire de la table
ou dtenir les droits DBA ou le privilge ALTER.

Si loption -gl a la valeur DBA, vous devez disposer des droits DBA.
Si loption -gl a la valeur NONE, linstruction LOAD TABLE nest pas
autorise.
Pour plus dinformations, reportez-vous la section Option de serveur
-gl [ASA - Guide dadministration, page 162].
Linstruction requiert un verrou exclusif sur la table. La table ne peut pas
tre dclare comme table temporaire locale.
Effets secondaires Les insertions ne sont pas enregistres dans le journal de transactions. Ainsi,
il nest pas possible de rcuprer des lignes insres en cas de panne. En
outre, nutilisez jamais linstruction LOAD TABLE dans une base de
donnes implique dans une rplication SQL Remote ou dans des bases de
donnes utilises comme clients MobiLink car ces technologies effectuent la
rplication des modifications en analysant le journal de transactions.
Linstruction LOAD TABLE ne dclenche aucun trigger associ la table.
Un point de reprise est effectu au dbut de lopration. Un deuxime point
de reprise peut tre excut, de faon facultative, la fin de lopration.
Les statistiques de colonne sont mises jour si de grandes quantits de
donnes sont charges.
Effets secondaires Commit automatique.
Voir aussi Instruction UNLOAD TABLE la page 680
Instruction INSERT la page 551
Instruction INPUT [Interactive SQL] la page 545
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non applicable.


Exemple Lexemple suivant illustre linstruction LOAD TABLE. Il sagit de crer
dabord une table, puis dy charger des donnes laide dun fichier appel
input.txt.
CREATE TABLE T( a char(100), let_me_default int DEFAULT 1, c
char(100) )

Voici le contenu dun fichier appel input.txt :

570
Chapitre 4. Instructions SQL

ignore_me, this_is_for_column_c, this_is_for_column_a

Linstruction LOAD suivante charge le fichier appel input.txt :


LOAD TABLE T ( filler(), c, a ) FROM input.txt FORMAT ASCII
DEFAULTS ON

La commande SELECT * FROM t donne le jeu de rsultats suivant :


this_is_for_column_a, 1, this_is_for_column_c

Excutez linstruction LOAD TABLE avec un nom de fichier construit de


faon dynamique, via linstruction EXECUTE IMMEDIATE :
CREATE PROCEDURE LoadData( IN from_file LONG VARCHAR )
BEGIN
DECLARE cmd LONG VARCHAR;
SET cmd = LOAD TABLE DBA.MyTable FROM ||
d:\\data\\ || from_file || ;
EXECUTE IMMEDIATE WITH ESCAPES OFF cmd;
END

571
Instruction LOCK TABLE
Description Empcher les transactions simultanes daccder une table ou de la
modifier.
Syntaxe LOCK TABLE nom_table
[ WITH HOLD ]
IN { SHARE | EXCLUSIVE } MODE

Paramtres nom_table La table doit tre une table de base de donnes, et non une vue.
Dans la mesure o les donnes dune table temporaire existent au niveau
local pour la connexion courante, le verrouillage des tables temporaires
locales ou globales na aucune incidence.
Clause WITH HOLD Si cette clause est spcifie, le verrou est maintenu
jusqu la fin de la connexion. En labsence de spcification de cette clause,
le verrou est libr la validation ou lannulation de la transaction
courante.
Mode SHARE Empche dautres transactions de modifier la table, tout en
leur accordant laccs en lecture. Dans ce mode, vous pouvez modifier des
donnes de la table tant que dautres transactions nont pas verrouill la
ligne en cours de modification, soit de faon indirecte soit de faon explicite
avec LOCK TABLE.
Mode EXCLUSIVE Empcher dautres transactions daccder la table.
Aucune requte, mise jour dun type quelconque ou action quelconque sur
la table ne peut tre excute par une autre transaction. Si une table t est
verrouille exclusivement avec LOCK TABLE t IN EXCLUSIVE
MODE, le comportement par dfaut du serveur est de ne pas acqurir de
verrous de ligne pour t. Il est possible de dsactiver ce comportement en
rglant loption SUBSUME_ROW_LOCKS sur OFF.
Utilisation Linstruction LOCK TABLE permet de grer directement la concurrence
daccs au niveau table, indpendamment du niveau disolement en vigueur.
Alors que le niveau disolement dune transaction gouverne gnralement
les types de verrous dfinis lors de lexcution dune demande, linstruction
LOCK TABLE permet un verrouillage plus explicite des lignes dune table.
Les verrous placs par LOCK TABLE en mode SHARE sont des verrous
fantmes et anti-fantmes, affichs par la procdure sa_locks comme PT et
AT.
Autorisations Pour verrouiller une table en mode SHARE, vous devez dtenir des
autorisations SELECT.
Pour verrouiller une table en mode EXCLUSIVE ; vous devez tre
propritaire de la table ou dtenir des droits DBA.

572
Chapitre 4. Instructions SQL

Effets secondaires Les autres transactions exigeant un accs la table verrouille risquent
dtre retardes ou bloques.
Voir aussi Instruction SELECT la page 627
Procdure systme sa_locks la page 846
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Supporte par Adaptive Server Enterprise. Adaptive Server


Enterprise ne prend pas en charge la clause WITH HOLD. Adaptive
Server Enterprise fournit une clause WAIT qui nest pas supporte par
Adaptive Server Anywhere.
Exemple Linstruction suivante empche les autres transactions de modifier la table
customer pendant la dure de la transaction courante :
LOCK TABLE customer
IN SHARE MODE

573
Instruction LOOP
Description Rpter lexcution dune liste dinstructions.
Syntaxe [ tiquette_instruction : ]
[ WHILE condition_recherche ] LOOP
liste_instructions
END LOOP [ tiquette_instruction ]

Utilisation Les instructions de contrle WHILE et LOOP permettent de rpter


lexcution dune liste dinstructions SQL tant que condition_recherche
renvoie la valeur TRUE. Pour poursuivre lexcution la premire
instruction suivant END LOOP, vous pouvez utiliser linstruction LEAVE.
Si vous spcifiez ltiquette (tiquette_instruction ) de fin, elle doit
correspondre ltiquette de dbut.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction FOR la page 507
Instruction LEAVE la page 560
Normes et compatibilit SQL/92 Fonctionnalit de module stock de manire permanente.
SQL/99 Fonctionnalit de module stock de manire permanente.
Sybase Non prise en charge par Adaptive Server Enterprise.
Linstruction WHILE permet de boucler les procdures stockes
Transact-SQL.
Exemple Boucle While dans une procdure :
...
SET i = 1;
WHILE i <= 10 LOOP
INSERT INTO Counters( number ) VALUES ( i );
SET i = i + 1;
END LOOP;
...

Boucle avec tiquette dans une procdure :


SET i = 1;
lbl:
LOOP
INSERT
INTO Counters( number )
VALUES ( i );
IF i >= 10 THEN
LEAVE lbl;
END IF;
SET i = i + 1;
END LOOP lbl

574
Chapitre 4. Instructions SQL

Instruction MESSAGE
Description Afficher un message.
Syntaxe MESSAGE expression, . . .
[ TYPE { INFO | ACTION | WARNING | STATUS } ]
[ TO { CONSOLE
| CLIENT [ FOR { CONNECTION id_conn | ALL } ]
| LOG }
[ DEBUG ONLY ]
]

id_conn : entier

Paramtres Clause TYPE La clause TYPE na deffet que si le message est envoy au
client. Lapplication cliente dcide de la manire dont elle traite le message.
Interactive SQL affiche les messages dans les emplacements suivants :
INFO Volet Messages. Il sagit du type par dfaut.
ACTION Zone de message avec un bouton OK.
WARNING Zone de message avec un bouton OK.

STATUS Volet Messages.


Clause TO Cette clause spcifie la destination dun message :
CONSOLE Envoie des messages dans la fentre du serveur de base de
donnes. Il sagit de la valeur par dfaut.

CLIENT Envoie des messages lapplication cliente. Votre application


doit dcider la faon dont elle va traiter le message et vous pouvez utiliser
la clause TYPE comme informations de base pour cette dcision.
LOG Envoie les messages dans le fichier de trace du serveur spcifi par
loption -o.
Clause FOR Pour les messages TO CLIENT, cette clause spcifie les
connexions qui reoivent une notification concernant le message :
CONNECTION id_conn Spcifie lID de connexion du destinataire
pour le message.
ALL Spcifie que toutes les connexions ouvertes reoivent le message.
DEBUG ONLY Cette clause vous permet de contrler si les messages de
dbogage ajouts dans les procdures et triggers stocks sont activs ou
dsactivs en modifiant le paramtre de loption DEBUG_MESSAGES.

575
Lorsque DEBUG ONLY est spcifi, linstruction MESSAGE nest excute
que si loption DEBUG_MESSAGES a la valeur ON.

Remarque
Les messages DEBUG ONLY ne comptent pas lorsque loption DEBUG_-
MESSAGES a la valeur OFF. Ainsi, ces instructions peuvent habituel-
lement tre maintenues dans les procdures stockes sur un systme de
production. Toutefois, elles ne doivent tre utilises que de manire limite
aux emplacements o elles seraient excutes frquemment afin dviter
une lgre baisse des performances.
Utilisation Linstruction MESSAGE affiche un message, qui peut tre une expression
quelconque. Les clauses peuvent spcifier le type du message et lendroit o
ce dernier apparat.
La procdure qui met une instruction MESSAGE . . . TO CLIENT doit tre
associe une connexion.
Par exemple, la zone de message nest pas affiche dans lexemple suivant,
car lvnement se produit en dehors dune connexion :
CREATE EVENT CheckIdleTime
TYPE ServerIdle
WHERE event_condition( IdleTime ) > 100
HANDLER
BEGIN
MESSAGE Idle engine type warning to client;
END;

Cependant, dans lexemple suivant, le message est crit sur la console du


serveur :
CREATE EVENT CheckIdleTime
TYPE ServerIdle
WHERE event_condition( IdleTime ) > 100
HANDLER
BEGIN
MESSAGE Idle engine type warning to console;
END;

Les expressions admises peuvent inclure une chane entre guillemets ou tout
autre constante, variable ou fonction.
La clause FOR peut tre utilise pour informer une autre application quun
vnement a t dtect sur le serveur sans que lapplication ait rechercher
explicitement cet vnement. Lorsque la clause FOR est utilise, les
destinataires reoivent le message lxcution dune nouvelle instruction
SQL. Si une instruction SQL est en cours dexcution, le destinataire recevra
le message une fois linstruction termine. Si linstruction en cours

576
Chapitre 4. Instructions SQL

dexcution est un appel de procdure stocke, le message est reu avant que
lappel ne soit termin.
Si une application requiert une notification dans un court dlai aprs envoi
du message et lorsque la connexion nexcute pas dinstruction SQL, vous
pouvez utiliser une deuxime connexion. Cette connexion peut excuter une
ou plusieurs instructions WAITFOR DELAY. Ces instructions ne
consomment pas normment de ressources sur le serveur ou le rseau
(comme dans le cas dune approche dinterrogation), mais permettent aux
applications de recevoir une notification du message peu de temps aprs son
envoi.
Les clients ESQL et ODBC reoivent les messages via les fonctions callback
de message. Dans chaque cas, ces fonctions doivent tre enregistres. Pour
enregistrer les routines de gestion de messages ESQL, utilisez la fonction
db_register_callback.
Les clients ODBC peuvent enregistrer les fonctions callback au moyen de la
fonction SQLSetConnectAttr.
Autorisations Les droits DBA sont ncessaires pour excuter une instruction MESSAGE
contenant une clause FOR.
Effets secondaires Aucun.
Voir aussi Instruction CREATE PROCEDURE la page 390
Option DEBUG_MESSAGES [base de donnes] [ASA - Guide
dadministration, page 706]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Linstruction Transact-SQL PRINT, galement disponible dans Adaptive
Server Anywhere, offre une fonctionnalit identique.

Exemples 1. La procdure ci-dessous affiche un message dans la fentre de messages


du serveur.
CREATE PROCEDURE message_test ()
BEGIN
MESSAGE The current date and time: , Now();
END

Linstruction :
CALL message_test()

affiche la chane Heure et date courantes, suivie de la date et de lheure


courantes, dans la fentre de message du serveur de base de donnes.

577
2. Pour enregistrer une fonction callback dans ODBC, vous devez tout
dabord dclarer la routine de gestion de messages :
void SQL_CALLBACK my_msgproc(
void * sqlca,
unsigned char msg_type,
long code,
unsigned short len,
char* msg )
{ ... }

Installez la routine de gestion de messages dclare en appelant la


fonction SQLSetConnectAttr.
rc = SQLSetConnectAttr(
dbc,
ASA_REGISTER_MESSAGE_CALLBACK,
(SQLPOINTER) &my_msgproc, SQL_IS_POINTER );

578
Chapitre 4. Instructions SQL

Instruction OPEN [ESQL] [SP]


Description Ouvrir un curseur prcdemment dclar afin daccder aux informations de
la base de donnes.
Syntaxe OPEN nom_curseur
[ USING [ DESCRIPTOR nom_sqlda | var_hte, . . .] ]
[ WITH HOLD ]
[ ISOLATION LEVEL n ]
[ BLOCK n ]

nom_curseur : identificateur ou var_hte

nom_sqlda : identificateur

Paramtres Utilisation dEmbedded SQL Une fois linstruction OPEN correctement


excute, le champ sqlerrd [3 ] de la zone SQLCA (SQLIOESTIMATE) est
renseign avec une estimation du nombre dentres/sorties requises pour
extraire toutes les lignes de la requte. De mme, le champ sqlerrd [2 ] de la
SQLCA (SQLCOUNT) est renseign soit avec le nombre rel de lignes dans
le curseur (une valeur suprieure ou gale 0), soit avec lestimation
correspondante (un nombre ngatif dont la valeur absolue reprsente
lestimation). Cest le nombre de lignes rel qui est pris en compte si le
serveur de base de donnes peut le calculer sans compter les lignes. Vous
pouvez galement configurer la base de donnes de manire quelle renvoie
toujours le nombre de lignes rel (voir Option ROW_COUNTS [base de
donnes] [ASA - Guide dadministration, page 750]), ce qui peut se rvler
lourd grer.
Si vous spcifiez le nom du curseur (nom_curseur ) sous la forme dun
identificateur ou dune chane, linstruction DECLARE CURSOR
correspondante doit apparatre avant linstruction OPEN dans le programme
en langage C. En revanche, si vous spcifiez le nom du curseur sous la forme
dune variable hte, linstruction DECLARE CURSOR doit tre excute
avant linstruction OPEN.
Clause USING DESCRIPTOR La clause USING DESCRIPTOR est
rserve Embedded SQL. Elle prcise les variables htes lier aux
marques de rservation dune instruction SELECT pour laquelle le curseur a
t dclar.
Clause WITH HOLD Par dfaut, tous les curseurs sont automatiquement
ferms la fin de la transaction courante (COMMIT ou ROLLBACK). La
clause facultative WITH HOLD permet de maintenir le curseur ouvert pour
les transactions ultrieures. Il reste ouvert jusqu la fin de la connexion
courante ou jusqu lexcution dune instruction CLOSE explicite.

579
Linterruption dune connexion entrane automatiquement la fermeture des
curseurs.
Clause ISOLATION LEVEL La clause ISOLATION LEVEL permet
douvrir le curseur dsign avec un niveau disolement diffrent de celui
correspondant la valeur courante de loption ISOLATION_LEVEL. Toutes
les oprations associes ce curseur sont excutes au niveau disolement
spcifi, quelle que soit la valeur de loption. Si vous omettez cette clause, le
niveau disolement du curseur correspond alors, pour tout le temps o il
reste ouvert, la valeur de loption ISOLATION_LEVEL louverture du
curseur. Pour plus dinformations, reportez-vous la section
Fonctionnement du verrouillage [ASA - Guide de lutilisateur SQL, page 148].
Le curseur est positionn avant la premire ligne (voir Utilisation de
curseurs dans Embedded SQL [ASA - Guide de programmation, page 181] ou
Utilisation de curseurs dans les procdures et les triggers [ASA - Guide de
lutilisateur SQL, page 741]).

Clause BLOCK Cette clause est rserve Embedded SQL. Lapplication


cliente peut extraire plusieurs lignes la fois. Cette opration est connue
sous le nom dextraction de bloc ou dextraction multiligne. La clause
BLOCK peut rduire le nombre de lignes devant faire lobjet dune
prlecture. Dfinir la clause BLOCK OPEN quivaut la dfinir chaque
FETCH.
Pour plus dinformations, reportez-vous la section Instruction
FETCH [ESQL] [SP] la page 502.
Utilisation Linstruction OPEN ouvre le curseur nomm. Le curseur doit avoir t
pralablement dclar.
Si le curseur est dclar dans une instruction CALL, linstruction OPEN
dclenche lexcution de la procdure jusqu ce que le premier jeu de
rsultats (instruction SELECT sans clause INTO) soit rencontr. Si la
procdure se termine sans quaucun jeu de rsultats nait t trouv,
lavertissement SQLSTATE_PROCEDURE_COMPLETE est mis.
Autorisations Vous devez dtenir lautorisation SELECT sur toutes les tables indiques
dans une instruction SELECT ou lautorisation EXECUTE sur la procdure
spcifie dans une instruction CALL.
Effets secondaires Aucun.
Voir aussi Instruction DECLARE CURSOR [ESQL] [SP] la page 456
Instruction RESUME la page 610
Instruction PREPARE [ESQL] la page 589
Instruction FETCH [ESQL] [SP] la page 502
Instruction RESUME la page 610

580
Chapitre 4. Instructions SQL

Instruction CLOSE [ESQL] [SP] la page 337


Normes et compatibilit SQL/92 Lutilisation du langage Embedded SQL est une fonctionnalit
dentre de gamme. Lutilisation des procdures est une fonctionnalit
PSM (Persistent Stored Modules).

SQL/99 Lutilisation dEmbedded SQL est une fonction principale.


Lutilisation des procdures est une fonctionnalit PSM (Persistent Stored
Modules).
Sybase Adaptive Server Enterprise reconnat la syntaxe simple OPEN
nom_curseur. En revanche, les procdures stockes dAdaptive Server
Enterprise ne supportent aucune des autres clauses. Open Client/Open
Server supporte la syntaxe du descripteur USING et des variables htes.
Exemple Voici des exemples dutilisation de linstruction OPEN en Embedded SQL :
EXEC SQL OPEN employee_cursor;

et
EXEC SQL PREPARE emp_stat FROM
SELECT empnum, empname FROM employee WHERE name like ?;
EXEC SQL DECLARE employee_cursor CURSOR FOR emp_stat;
EXEC SQL OPEN employee_cursor USING :pattern;

Lexemple ci-dessous est extrait dune procdure ou dun trigger.


BEGIN
DECLARE cur_employee CURSOR FOR
SELECT emp_lname
FROM employee;
DECLARE name CHAR(40);
OPEN cur_employee;
LOOP
FETCH NEXT cur_employee into name;
...
END LOOP
CLOSE cur_employee;
END

581
Instruction OUTPUT [Interactive SQL]
Description Enregistrer les rsultats de la requte courante dans un fichier.
Syntaxe OUTPUT TO nom_fichier
[ APPEND ]
[ VERBOSE ]
[ FORMAT format_sortie ]
[ ESCAPE CHARACTER caractre ]
[ ESCAPES { ON | OFF }
[ DELIMITED BY chane ]
[ QUOTE chane [ ALL ] ]
[ COLUMN WIDTHS (entier , . . .) ]
[ HEXADECIMAL { ON | OFF | ASIS } ]
[ ENCODING codage ]

format_sortie :
ASCII | DBASEII | DBASEIII | EXCEL
| FIXED | FOXPRO | HTML | LOTUS | SQL | XML
codage : chane ou identificateur

Paramtres Clause APPEND Ce mot-cl facultatif permet dajouter les rsultats de la


requte la fin dun fichier de rsultat existant sans craser le contenu
prcdent du fichier. Si la clause APPEND nest pas utilise, linstruction
OUTPUT crase le contenu du fichier de rsultat par dfaut. Le mot-cl
APPEND est correct si le format de sortie est ASCII, FIXED ou SQL.
Clause VERBOSE Lorsque le mot-cl facultatif VERBOSE est inclus, des
messages derreur relatifs la requte, linstruction SQL utilise pour
slectionner les donnes et aux donnes elles-mmes sont crits dans le
fichier de rsultat. Les lignes ne contenant pas de donnes sont prcdes de
deux tirets. Si VERBOSE est omis (option par dfaut), seules les donnes
sont crites dans le fichier. Le mot-cl VERBOSE est correct si le format de
sortie est ASCII, FIXED ou SQL.
Clause FORMAT Les formats de sortie admis sont les suivants :
ASCII La sortie est au format ASCII, chaque ligne du fichier
correspondant une ligne de la table. Toutes les valeurs sont spares par
des virgules et les chanes figurent entre apostrophes. Vous pouvez
modifier le dlimiteur et les chanes entre apostrophes laide des clauses
DELIMITED BY et QUOTE. Si le mot-cl ALL est spcifi dans la
clause QUOTE, toutes les valeurs (et pas seulement les chanes) figurent
entre apostrophes.
Trois autres squences spciales sont galement reconnues. Les deux
caractres \n reprsentent le caractre de nouvelle ligne, \\reprsente une

582
Chapitre 4. Instructions SQL

ligne unique et la squence \xDD le caractre avec le code hexadcimal


DD. Il sagit du format de sortie par dfaut.

DBASEII La fichier de rsultat est au format dBASE II et contient des


dfinitions de colonne. Notez que vous pouvez obtenir 32 colonnes au
maximum. Les noms de colonnes ne dpassent pas 11 caractres et
chaque ligne de donnes dans chaque colonne nen comporte pas plus de
255.

DBASEIII Le fichier de rsultat est au format dBASE III et contient des


dfinitions de colonne. Notez que vous pouvez obtenir 128 colonnes au
maximum. Les noms de colonnes ne dpassent pas 11 caractres et
chaque ligne de donnes dans chaque colonne nen comporte pas plus de
255.

EXCEL La sortie est une feuille de calcul Excel 2.1. La premire ligne
de la feuille de calcul contient des tiquettes de colonne (ou des noms si
aucune tiquette nest dfinie). Les lignes suivantes de la feuille de calcul
contiennent les donnes relles de la table.
FIXED Le fichier de rsultat est au format fixe, chaque colonne ayant
une largeur fixe. Vous pouvez spcifier la largeur de chaque colonne
laide de la clause COLUMN WIDTHS. Ce format ne fournit aucun
en-tte de colonne.
Si la clause COLUMN WIDTHS est omise, la largeur de chaque colonne
est calcule en fonction de leur type de donnes et avec une taille
suffisamment importante pour contenir les valeurs correspondant au type
de donnes de la colonne. Toutefois, une exception concerne les donnes
LONG VARCHAR et LONG BINARY dont la valeur par dfaut est de
32 Ko.

FOXPRO La fichier de rsultat est au format FoxPro et contient des


dfinitions de colonne. Notez que vous pouvez obtenir 128 colonnes au
maximum. Les noms de colonne sont tronqus 11caractres. Les noms
de colonnes ne dpassent pas 11 caractres et chaque ligne de donnes
dans chaque colonne nen comporte pas plus de 255.

HTML La sortie est au format HTML (Hyper Text Markup Language).


LOTUS Le fichier de rsultat est au format WKS de Lotus. Les noms de
colonne figurent sur la premire ligne de la feuille de calcul. Notez quil
existe certaines restrictions sur la taille maximale des feuilles de calcul au
format WKS de Lotus que dautres logiciels (tels que Lotus 1-2-3)
peuvent charger. Il ny a aucune limite la taille des fichiers que peut
gnrer Interactive SQL.

583
SQL La sortie est une instruction INPUT dInteractive SQL ncessaire
pour recrer les informations figurant dans la table.
XML La sortie est un fichier XML cod au format UTF-8 et contenant
une dfinition de type de document (DTD) embarque. Les valeurs
binaires sont codes sous la forme de blocs CDATA, avec des donnes
binaires saffichant sous la forme de chanes hexadcimales deux
chiffres. Linstruction INPUT naccepte pas le format de fichier XML.
Clause ESCAPE CHARACTER Le caractre dchappement associ aux
caractres enregistrs sous forme de codes hexadcimaux et de symboles est,
par dfaut, la barre oblique inverse (\). \x0A, par exemple, reprsente le
caractre de changement de ligne.
La clause ESCAPE CHARACTER vous permet de modifier le caractre
dchappement. Par exemple, pour utiliser le point dexclamation comme
caractre dchappement, saisissez :
... ESCAPE CHARACTER !

Clause ESCAPES Si ESCAPES est active (ON ; valeur par dfaut), les
caractres suivant la barre oblique inverse sont reconnus et interprts
comme des caractres spciaux par le serveur de base de donnes. La
combinaison \n reprsente un caractre de changement de ligne ; vous
pouvez galement inclure dautres caractres dans les donnes sous forme de
codes ASCII hexadcimaux, tels que \x09 pour le caractre de tabulation.
Deux barres obliques inverses conscutives ( \\) sont interprtes comme une
seule. Une barre oblique inverse suivie dun caractre autre que n, x, X ou
\est interprt comme deux caractres spars. Par exemple, \q insre un
caractre barre oblique inverse et la lettre q.
Clause DELIMITED BY Cette clause nest utilisable quavec le format de
sortie ASCII. Le dlimiteur de colonne (par dfaut, une virgule) spare les
colonnes.
Clause QUOTE Cette clause nest utilisable quavec le format de sortie
ASCII. Le dlimiteur de chane encadre les valeurs de type chane. La valeur
par dfaut est une apostrophe. Si vous spcifiez ALL dans la clause QUOTE,
toutes les valeurs (et pas seulement les chanes) sont encadres par des
dlimiteurs de chane.
Clause COLUMN WIDTHS La clause COLUMN WIDTHS permet de
spcifier la largeur des colonnes pour le format de sortie FIXED.
Clause HEXADECIMAL La clause HEXADECIMAL spcifie la mthode
de dchargement des donnes de type binary, uniquement pour le format
ASCII. Lorsquelle est active (ON), les donnes binaires sont dcharges
dans le format 0xabcd. Lorsquelle est dsactive (OFF), les donnes

584
Chapitre 4. Instructions SQL

binaires ne sont pas prises en compte lors du dchargement (\xab\xcd).


Lorsquelle est dfinie avec ASIS, les valeurs sont crites telles quelles,
cest--dire, sans aucun chappement-mme si la valeur contient des
caractres de contrle. ASIS est utile pour tout texte contenant des caractres
de mise en forme tels que des tabulations ou des retours la ligne.
Clause ENCODING Largument codage permet de spcifier le codage
utilis pour crire le fichier. La clause ENCODING ne peut tre utilise
quavec le format ASCII.
Si largument codage nest pas spcifi, Interactive SQL dtermine la page
de code qui est utilise pour crire le fichier de la manire suivante (les
valeurs de la page de code se prsentant en premier dans la liste ont la
priorit sur les suivantes) :
la page de code spcifie avec loption DEFAULT_ISQL_ENCODING
(si cette option est dfinie) ;
la page de code spcifie avec loption -codepage lors du dmarrage
dInteractive SQL ;

la page de code par dfaut de lordinateur sur lequel Interactive SQL est
excut.

Pour plus dinformations sur Interactive SQL et les codages,


reportez-vous la section Option DEFAULT_ISQL_ENCODING
[Interactive SQL] [ASA - Guide dadministration, page 707].
Utilisation Linstruction OUTPUT copie dans un fichier les informations extraites par la
requte courante.
Vous pouvez spcifier le format de sortie laide de la clause facultative
FORMAT. En labsence de clause FORMAT, la valeur de loption
OUTPUT_FORMAT dInteractive SQL est utilise (voir Option
OUTPUT_FORMAT [Interactive SQL] [ASA - Guide dadministration,
page 739]).

La requte courante est linstruction SELECT ou INPUT ayant gnr


linformation affiche dans longlet Rsultats du volet Rsultats. En
labsence de requte courante, linstruction OUTPUT signale une erreur.
Autorisations Aucune.
Effets secondaires Dans Interactive SQL, longlet Rsultats naffiche que les rsultats de la
requte courante. Tous les rsultats de la requte prcdente sont remplacs
par ceux de la requte courante.
Voir aussi Instruction SELECT la page 627
Instruction INPUT [Interactive SQL] la page 545

585
Instruction UNLOAD TABLE la page 680
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non applicable.


Exemples Enregistrement du contenu de la table employee dans un fichier, au format
ASCII :
SELECT *
FROM employee;
OUTPUT TO employee.txt
FORMAT ASCII

Enregistrement du contenu de la table employee la fin dun fichier existant


en incluant galement dans ce fichier tous les messages ventuels lis la
requte :
SELECT *
FROM employee;
OUTPUT TO employee.txt APPEND VERBOSE

Supposons que vous deviez exporter une valeur qui contient un caractre de
saut de ligne inclus. La valeur numrique de ce caractre est 10, que vous
pouvez reprsenter en tant que chane \x0a dans une instruction SQL. Si
vous excutez linstruction suivante, avec HEXADECIMAL dfini ON,
SELECT line1\x0aline2;
OUTPUT TO file.txt HEXADECIMAL ON

vous obtenez un fichier comprenant une seule ligne dont le texte est le
suivant :
line10x0aline2

Mais si vous excutez la mme instruction avec HEXADEMICAL dfini


OFF, vous obtenez ce qui suit :
line1\x0aline2

Enfin, si vous dfinissez HEXADECIMAL avec la valeur ASIS, vous


obtenez un fichier contenant deux lignes :
line1
line2

En utilisant ASIS, vous obtenez deux lignes car le caractre de saut de ligne
inclus a t export sans avoir t converti en une reprsentation
hexadcimale deux chiffres et sans avoir reu aucun prefixe.

586
Chapitre 4. Instructions SQL

Instruction PARAMETERS [Interactive SQL]


Description Spcifier les paramtres dun fichier de commandes Interactive SQL.
Syntaxe PARAMETERS paramtre1, paramtre2, . . .

Utilisation Linstruction PARAMETERS identifie les paramtres dun fichier de


commandes, ce qui permet de les rfrencer.
Pour rfrencer un paramtre, saisissez, par exemple :
{parameter1}

dans le fichier dans lequel vous souhaitez substituer le paramtre dsign.


Ninsrez pas despace entre le nom du paramtre et les accolades.
Si vous appelez un fichier de commandes avec un nombre de paramtres
infrieur au nombre requis, Interactive SQL vous invite saisir les valeurs
des paramtres manquants.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction READ [Interactive SQL] la page 598
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non applicable.


Exemple Le fichier de commandes Interactive SQL suivant accepte deux paramtres :
PARAMETERS department_id, file;
SELECT emp_lname
FROM employee
WHERE dept_id = {department_id}
>#{file}.dat;

Si vous enregistrez ce script dans un fichier nomm test.sql, vous pouvez


lexcuter depuis Interactive SQL laide de la commande suivante :
READ test.SQL [100] [data]

587
Instruction PASSTHROUGH [SQL Remote]
Description Dmarrer ou arrter le mode passthrough pour ladministration SQL
Remote. Les formes 1 et 2 permettent de lancer le mode mulation et la
forme 3, de larrter.
Syntaxe 1 PASSTHROUGH [ ONLY ] FOR id_utilisateur , . . .

Syntaxe 2 PASSTHROUGH [ ONLY ] FOR SUBSCRIPTION


TO [ ( propritaire ) ].nom_publication [ ( constante ) ]

Syntaxe 3 PASSTHROUGH STOP

Utilisation En mode passthrough, le serveur de base de donnes excute les instructions


SQL tout en les enregistrant dans le journal de transactions pour les envoyer
sous forme de messages aux souscripteurs. Si vous avez spcifi le mot-cl
ONLY pour lancer le mode passthrough, les instructions ne sont pas
excutes au niveau du serveur, mais sont seulement transmises aux
destinataires. Lorsquune session passthrough contient des appels vers des
procdures stockes, les procdures doivent exister sur le serveur qui met
les commandes passthrough, mme si elles ne sont pas excutes localement
sur le serveur. Les destinataires des instructions SQL en mode passthrough
sont soit une liste dID utilisateur (syntaxe 1), soit lensemble des
souscripteurs une publication donne. Le mode passthrough peut
galement servir appliquer des modifications une base de donnes
distante partir de la base consolide ou denvoyer des instructions dune
base de donnes distante vers la base consolide.
La syntaxe 2 permet denvoyer des instructions vers des base de donnes
distantes dont les souscriptions ont t lances ; elle nenvoie pas
dinstructions vers des bases distantes dont les souscriptions ont t cres,
mais non dmarres.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Aucun.
Voir aussi Procdure sp_passthrough [SQL Remote - Guide de lutilisateur, page 440]
Exemple PASSTHROUGH FOR rem_db ;
...
( SQL statements to be executed at the remote database )
...
PASSTHROUGH STOP ;

588
Chapitre 4. Instructions SQL

Instruction PREPARE [ESQL]


Description Prparer une instruction pour excution ultrieure ou pour dfinir un curseur.
Syntaxe PREPARE nom_instruction
FROM instruction
[ DESCRIBE type_description INTO [ [ SQL ] DESCRIPTOR ] descripteur ]
[ WITH EXECUTE ]

nom_instruction : identificateur ou var_hte

instruction : chane ou var_hte

type_description :
[ ALL | BIND VARIABLES | INPUT | OUTPUT | SELECT LIST ]
[ LONG NAMES [ [ [ OWNER. ]TABLE. ]COLUMN ]
| WITH VARIABLE RESULT ]

Paramtres nom_instruction Le nom dinstruction peut tre un identificateur ou une


variable hte. Toutefois, vitez dutiliser un identificateur lorsque vous avez
recours de multiples SQLCA. Si cest le cas, deux instructions prpares
peuvent porter le mme numro dinstruction, ce qui risque dentraner
lexcution ou louverture de linstruction incorrecte.
Clause DESCRIBE Si vous utilisez la clause DESCRIBE INTO
DESCRIPTOR, linstruction prpare est dcrite dans le descripteur
spcifi. Le type de description peut tre nimporte lequel des types autoriss
dans linstruction DESCRIBE.
Clause WITH EXECUTE Si vous spcifiez la clause WITH EXECUTE,
linstruction nest excute que si, et seulement si, il ne sagit pas dune
instruction CALL ou SELECT et quelle na pas de variables htes. Une fois
excute, linstruction est immdiatement supprime. Si, le cas chant, les
instructions PREPARE et DESCRIBE aboutissent sans que linstruction
prpare puisse tre excute, un avertissement SQLCODE 111, SQLSTATE
01W08 est mis, et linstruction est conserve.
En rduisant les besoins en communication client/serveur, les clauses
DESCRIBE INTO DESCRIPTOR et WITH EXECUTE peuvent amliorer
les performances du serveur.
Clause WITH VARIABLE RESULT Permet de dcrire des procdures
susceptibles de disposer de plusieurs jeux de rsultats, avec un nombre ou
des types de colonnes diffrents.
Si vous utilisez la clause WITH VARIABLE RESULT, le serveur de base de
donnes affecte SQLCOUNT, une fois DESCRIBE excut, une des
valeurs suivantes :

589
0 Le jeu de rsultats est variable : il convient de dcrire lappel de
procdure aprs chaque instruction OPEN.

1 Le jeu de rsultats est fixe : il est inutile de rpter la description.

Statique et dynamique
Pour des raisons de compatibilit, la prparation des instructions COMMIT,
PREPARE TO COMMIT et ROLLBACK est toujours supporte. Toute-
fois, il est recommand deffectuer toutes les oprations de gestion des
transactions avec le langage Embedded SQL statique, qui peut tre requis
dans certains environnements dapplication. En outre, dautres systmes en
Embedded SQL ne supportent pas les oprations de gestion dynamique des
transactions.
Utilisation Linstruction PREPARE permet de prparer une instruction SQL partir
dinstruction et de lassocier nom_instruction. Ce nom dinstruction est
rfrenc pour excuter linstruction ou ouvrir un curseur si linstruction est
SELECT. Le nom_instruction peut tre une variable hte de type
a_sql_statement_number dfinie dans le fichier den-tte sqlca.h, lequel est
automatiquement inclus. Si nom_instruction est un identificateur, vous ne
pouvez prparer quune seule instruction par module avec ce nom.
Si vous utilisez une variable hte, elle doit tre du type short int. Il existe un
typedef associ ce type dans sqlca.h, appel a_sql_statement_number.
Ce type, reconnu par le prprocesseur SQL, peut tre utilis dans une section
DECLARE. La valeur de la variable hte est dfinie par la base de donnes
pendant lexcution de linstruction PREPARE et na pas besoin dtre
configure par le programmeur.
Autorisations Aucune.
Effets secondaires Toute instruction prcdemment prpare avec le mme nom est perdue.
Linstruction nest annule aprs utilisation que si vous avez spcifi WITH
EXECUTE et que lexcution russit. Assurez-vous dannuler toujours
(DROP) linstruction aprs son utilisation. Si tel nest pas le cas, la mmoire
associe linstruction nest pas libre.
Voir aussi Instruction DECLARE CURSOR [ESQL] [SP] la page 456
Instruction DESCRIBE [ESQL] la page 469
Instruction OPEN [ESQL] [SP] la page 579
Instruction EXECUTE [ESQL] la page 491
Instruction DROP STATEMENT [ESQL] la page 483
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.
SQL/99 Fonction principale.

590
Chapitre 4. Instructions SQL

Sybase Prise en charge par Open Client/Open Server.


Exemple Linstruction suivante prpare une requte simple :
EXEC SQL PREPARE employee_statement FROM
SELECT emp_lname FROM employee;

591
Instruction PREPARE TO COMMIT
Description Vrifier si un COMMIT peut sexcuter correctement.
Syntaxe PREPARE TO COMMIT

Utilisation Linstruction PREPARE TO COMMIT teste si lexcution dun COMMIT


peut aboutir. Elle gnre une erreur si un COMMIT ne peut tre excut sans
violation de lintgrit de la base de donnes.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction COMMIT la page 341
Instruction ROLLBACK la page 621
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
Exemple La squence dinstruction ci-dessous gnre finalement une erreur en raison
dun contrle de cl trangre sur la table employee.
EXECUTE IMMEDIATE
"SET OPTION wait_for_commit = on";
EXECUTE IMMEDIATE "DELETE FROM employee
WHERE emp_id = 160";
EXECUTE IMMEDIATE "PREPARE TO COMMIT";

La squence dinstructions ci-aprs ne gnre pas derreur lexcution de


linstruction de suppression, mme si elle entrane des violations dintgrit.
Linstruction PREPARE TO COMMIT renvoie une erreur.
SET OPTION wait_for_commit= ON;
DELETE
FROM department
WHERE dept_id = 100;
PREPARE TO COMMIT;

592
Chapitre 4. Instructions SQL

Instruction PRINT [T-SQL]


Description Renvoyer un message au client ou en afficher un dans la fentre de messages
du serveur de base de donnes.
Syntaxe PRINT chane_format [, liste_arguments]

Utilisation Linstruction PRINT renvoie un message dans la fentre du client si vous


tes connect depuis une application Open Client ou jConnect. Si vous tes
connect via une application Embedded SQL ou ODBC, le message
saffiche dans la fentre du serveur de base de donnes.
La chane format peut contenir des marques de rservation associes aux
arguments de la liste darguments facultatifs. Ces marques se prsentent sous
le format %nn !, o nn est un entier compris entre 1 et 20.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction MESSAGE la page 575
Normes et compatibilit SQL/92 Extension de Transact-SQL.
SQL/99 Extension de Transact-SQL.

Sybase Prise en charge par Adaptive Server Enterprise.


Exemple Linstruction suivante renvoie un message :
PRINT Display this message

Lexemple suivant illustre lemploi de marques de rservation lintrieur de


linstruction PRINT :
DECLARE @var1 INT, @var2 INT
SELECT @var1 = 3, @var2 = 5
PRINT Variable 1 = %1!, Variable 2 = %2!, @var1, @var2

593
Instruction PUT [ESQL]
Description Insrer une ligne dans le curseur spcifi.
Syntaxe PUT nom_curseur
[ USING DESCRIPTOR nom_sqlda | FROM liste_var_hte ]
[ INTO { DESCRIPTOR nom_sqlda_cible | liste_var_hte_cible } ]
[ ARRAY :nnn ]

nom_curseur : identificateur ou var_hte

nom_sqlda : identificateur

liste_var_hte : peut contenir des variables indicateur

Utilisation Insre une ligne dans le curseur dsign. Les valeurs des colonnes sont
extraites de la premire SQLDA ou de la liste des variables htes, avec une
correspondance un-un avec les colonnes de linstruction INSERT (pour un
curseur INSERT) ou celles de la liste de slection (pour un curseur
SELECT).
Linstruction PUT ne peut tre utilise que sur un curseur via une instruction
INSERT ou SELECT qui rfrence une table unique dans la clause FROM
ou qui rfrence une vue de table unique de base de donnes, pouvant tre
mise jour.
Si le pointeur sqldata dans SQLDA est le pointeur NULL, aucune valeur
nest spcifie pour cette colonne. Si la colonne est associe une valeur par
dfaut (DEFAULT VALUE), celle-ci est utilise ; dans le cas contraire, elle
contient la valeur NULL.
La seconde SQLDA ou la seconde liste de variables htes contient les
rsultats de linstruction PUT.
La clause facultative ARRAY permet deffectuer des insertions (PUT)
globales, de plusieurs lignes la fois, qui peuvent amliorer les
performances. La valeur nnn reprsente le nombre de lignes insrer. Le
SQLDA doit contenir nnn * (columns per row) variables. La premire ligne
est place dans les variables SQLDA de 0 (columns per row)-1, etc.

Insertion dans un curseur


Pour les curseurs avec dfilement (tenant compte des valeurs), la ligne
insre apparat si la nouvelle ligne correspond la clause WHERE et
si le curseur keyset na pas termin le remplissage. Pour les curseurs
dynamiques, si la ligne insre correspond la clause WHERE, il est
possible quelle apparaisse. Les curseurs insensibles ne peuvent pas tre
mis jour.

594
Chapitre 4. Instructions SQL

Pour introduire des valeurs LONG VARCHAR ou LONG BINARY


dans la base de donnes, reportez-vous la section Instruction SET la
page 635.
Autorisations Vous devez dtenir lautorisation INSERT.
Effets secondaires Lorsque des lignes sont insres dans un curseur tenant compte des valeurs
(keyset), ces lignes apparaissent la fin du jeu de rsultats, mme
lorsquelles ne correspondent pas la clause WHERE de la requte ou si une
clause ORDER BY les aurait normalement places un autre endroit du jeu
de rsultats. Pour plus dinformations, reportez-vous la section
Modification de lignes via un curseur [ASA - Guide de programmation,
page 26].

Voir aussi Instruction UPDATE la page 683


Instruction UPDATE (positionne) [ESQL] [SP] la page 688
Instruction DELETE la page 465
Instruction DELETE (positionne) [ESQL] [SP] la page 467
Instruction INSERT la page 551
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.

SQL/99 Fonction principale.


Sybase Prise en charge par Open Client/Open Server.
Exemple Lexemple suivant illustre lemploi de PUT dans Embedded SQL :
EXEC SQL PUT cur_employee FROM :emp_id, :emp_lname;

595
Instruction RAISERROR [T-SQL]
Description Signaler une erreur et renvoyer un message au client.
Syntaxe RAISERROR numro_erreur [ chane_format ] [, liste_arguments ]

Paramtres numro_erreur numro_erreur est un entier cinq chiffres suprieur 17


000. Le numro derreur est enregistr dans la variable globale @@error.
chane_format Si la chane_format nest pas dclare ou est vide, le
numro derreur identifie le message derreur rechercher dans les tables
systme. Adaptive Server Enterprise recherche les messages dont le numro
est compris entre 17000 et 19999 dans la table SYSMESSAGES. En
revanche, dans Adaptive Server Anywhere, cette table est une vue vide ; ces
mmes erreurs correspondent donc une chane de format. Les messages
pour les numros derreur ayant des valeurs de 20000 ou suprieures se
trouvent dans la table SYS.SYSUSERMESSAGES.
Dans Adaptive Server Anywhere, la longueur de chane_format peut aller
jusqu 255 octets.
Les valeurs tendues supportes par linstruction Adaptive Server Enterprise
RAISERROR ne sont pas reconnues par Adaptive Server Anywhere.
La chane format peut contenir des marques de rservation associes aux
arguments de la liste darguments facultatifs. Ces marques se prsentent sous
le format %nn !, o nn est un entier compris entre 1 et 20.
Les tats et les codes RAISERROR intermdiaires sont perdus la fin de la
procdure. Si une erreur se produit simultanment au RAISERROR au
moment du retour, les informations derreur sont renvoyes, mais les
informations de RAISERROR sont perdues. Lapplication peut demander
des tats RAISERROR intermdiaires, par consultation de la variable
globale @@error diffrents points dexcution.
Utilisation Linstruction RAISERROR signale les erreurs dfinies par lutilisateur et les
notifie au client.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction CREATE TRIGGER [T-SQL] la page 446
Option ON_TSQL_ERROR [compatibilit] [ASA - Guide
dadministration, page 734]
Option CONTINUE_AFTER_RAISERROR [compatibilit] [ASA -
Guide dadministration, page 701]

Normes et compatibilit SQL/92 Extension de Transact-SQL.

596
Chapitre 4. Instructions SQL

SQL/99 Extension de Transact-SQL.


Sybase Prise en charge par Adaptive Server Enterprise.

Exemple Linstruction ci-aprs gnre lerreur 23000 (rpertories dans les erreurs
dfinies par lutilisateur) et adresse au client le message correspondant : Les
paramtres numro_erreur et chane_format ne sont pas spars par une
virgule. Le premier lment suivant une virgule est interprt comme le
premier lment de la liste darguments.
RAISERROR 23000 Invalid entry for this column: %1!, @val

Lexemple qui suit utilise RAISERROR pour interdire les connexions.


create procedure DBA.login_check()
begin
// Allow a maximum of 3 concurrent connections
if( db_property(ConnCount) > 3 ) then
raiserror 28000
User %1! is not allowed to connect -- there are already
%2! users logged on,
current user,
cast(db_property(ConnCount) as int)-1;
else
call sp_login_environment;
end if;
end
go
grant execute on DBA.login_check to PUBLIC
go
set option PUBLIC.Login_procedure=DBA.login_check
go

Pour prendre connaissance dun autre moyen permettant dinterdire les


connexions, reportez-vous la section Option LOGIN_PROCEDURE
[base de donnes] [ASA - Guide dadministration, page 725].

597
Instruction READ [Interactive SQL]
Description Lire les instructions Interactive SQL figurant dans un fichier.
Syntaxe READ [ ENCODING codage ] nom_fichier [ paramtres ]

codage : identificateur ou chane

Utilisation Linstruction READ permet de lire une squence dinstructions Interactive


SQL dans le fichier dsign. Ce fichier peut contenir toute instruction
Interactive SQL correcte, y compris dautres instructions READ. Les
niveaux dimbrication des instructions READ sont illimits. Si le nom de
fichier ne contient pas un chemin daccs absolu, Interactive SQL recherche
le fichier. Interactive SQL explore dabord le rpertoire courant, puis les
rpertoires spcifis dans la variable denvironnement SQLPATH, et ceux
spcifis dans la variable denvironnement PATH. Si le fichier nomm ne
porte aucune extension, Interactive SQL recherche dans chaque rpertoire un
fichier du mme nom portant lextension .SQL.
Largument codage permet de spcifier le codage utilis pour lire le fichier.
Linstruction READ ne traite pas les caractres dchappement lors de la
lecture dun fichier. Elle suppose que le fichier entier utilise le codage
spcifi.
Si largument codage nest pas spcifi, Interactive SQL dtermine la page
de code qui est utilise pour lire le fichier de la manire suivante (les valeurs
de la page de code se prsentant en premier dans la liste ont la priorit sur
les suivantes) :
la page de code spcifie avec loption DEFAULT_ISQL_ENCODING
(si cette option est dfinie) ;
la page de code spcifie avec loption -codepage lors du dmarrage
dInteractive SQL.
la page de code par dfaut de lordinateur sur lequel Interactive SQL est
excut.
Pour plus dinformations sur Interactive SQL et les codages,
reportez-vous la section Option DEFAULT_ISQL_ENCODING
[Interactive SQL] [ASA - Guide dadministration, page 707].
Les paramtres peuvent tre spcifis aprs le nom du fichier de commandes.
Ils correspondent aux paramtres de linstruction PARAMETERS situe en
tte du fichier dinstructions (reportez-vous la section Instruction
PARAMETERS [Interactive SQL] la page 587). Interactive SQL substitue
alors le paramtre correspondant chaque fois que le fichier source contient :

598
Chapitre 4. Instructions SQL

{parameter-name}

o nom_paramtre reprsente le nom du paramtre appropri.


Les paramtres transmis un fichier de commandes peuvent tre des
identificateurs, des nombres, des identificateurs dlimits par des
apostrophes ou des guillemets, ou des chanes. Si vous placez le paramtre
entre des dlimiteurs (apostrophes ou guillemets), ceux-ci sont insrs dans
le texte lors de la substitution. Les paramtres autres que les identificateurs,
les nombres ou les chanes (avec espaces ou tabulations) doivent apparatre
entre crochets ([ ]). Cela permet la substitution arbitraire de texte dans le
fichier de commandes.
Si le nombre de paramtres transmis au fichier de commandes est insuffisant,
Interactive SQL vous invite saisir les valeurs des paramtres manquants.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction PARAMETERS [Interactive SQL] la page 587
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non applicable.


Exemple Voici deux exemples dutilisation de linstruction READ :
READ status.rpt 160
READ birthday.SQL [>= 1988-1-1] [<= 1988-1-30]

599
Instruction READTEXT [T-SQL]
Description Lire des valeurs de texte et dimage partir de la base de donnes, en partant
dun offset spcifi et en lisant un nombre doctets spcifi.
Syntaxe READTEXT nom_table.nom_colonne
pointeur_texte offset taille
[HOLDLOCK]

Utilisation Cette instruction permet de lire des valeurs de type texte et image dans la
base de donnes. Vous ne pouvez pas excuter des oprations READTEXT
sur des vues.
Autorisations Autorisations SELECT sur la table.
Effets secondaires Aucun.
Voir aussi Instruction WRITETEXT [T-SQL] la page 701
Instruction GET DATA [ESQL] la page 518
TEXTPTR (fonction texte et image) la page 242
Normes et compatibilit SQL/92 Extension de Transact-SQL.
SQL/99 Extension de Transact-SQL.
Sybase Prise en charge par Adaptive Server Enterprise.
Adaptive Server Enterprise supporte la clause suivante (ce qui nest pas le
cas dAdaptive Server Anywhere) :
USING { BYTES | CHARS | CHARACTERS }

Ces options sont identiques dans le cas des jeux de caractres cods sur
un seul octet. Adaptive Server Anywhere utilise uniquement bytes, qui
est le paramtre par dfaut dans Adaptive Server Enterprise.
Adaptive Server Enterprise permet galement de contrler le niveau
disolement dans linstruction READTEXT. Ce nest pas le cas dans
Adaptive Server Anywhere.

600
Chapitre 4. Instructions SQL

Instruction RELEASE SAVEPOINT


Description Librer un point de sauvegarde au sein de la transaction courante.
Syntaxe RELEASE SAVEPOINT [nom_pointdesauvegarde]

Utilisation Libre un point de sauvegarde. Le nom_pointdesauvegarde est un


identificateur spcifi dans une instruction SAVEPOINT au sein de la
transaction courante. Si vous lomettez, cest le point de sauvegarde le plus
rcent qui est libr.
La libration dun point de sauvegarde nentrane aucun type de commit.
Elle supprime simplement le point de sauvegarde de la liste des points de
sauvegarde actifs.
Autorisations La transaction courante doit inclure une instruction SAVEPOINT
correspondante.
Effets secondaires Aucun.
Voir aussi Instruction BEGIN TRANSACTION la page 327
Instruction COMMIT la page 341
Instruction ROLLBACK la page 621
Instruction ROLLBACK TO SAVEPOINT la page 622
Instruction SAVEPOINT la page 626
Points de sauvegarde dans les transactions [ASA - Guide de lutilisateur
SQL, page 117]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise. Il existe
une fonctionnalit similaire dans Adaptive Server Enterprise qui utilise
des transactions imbriques.

601
Instruction REMOTE RESET [SQL Remote]
Description Servez-vous de cette instruction dans les procdures personnalises
dextraction de base de donnes pour dmarrer toutes les souscriptions pour
un utilisateur distant en une seule transaction.
Syntaxe REMOTE RESET id_utilisateur

Utilisation Cette commande lance toutes les souscriptions dun utilisateur distant en une
transaction unique. Elle dfinit les valeurs log_sent et confirm_sent de la
table SYSREMOTEUSER sur la position courante du journal de
transactions. Elle dfinit galement les valeurs de cration et de dmarrage
de SYSSUBSCRIPTION sur la position courante du journal de transactions
pour toutes les souscriptions de lutilisateur distant. Cette instruction
neffectue aucun commit. Vous devez en excuter un explicitement aprs cet
appel.
Pour crire un processus dextraction scuris sur une base de donnes
active, vous devez extraire les donnes au niveau disolement 3 au cours de
la transaction dans laquelle les souscriptions sont lances.
Cette instruction constitue une alternative au lancement de souscription.
START SUBSCRIPTION a pour effet secondaire un commit implicite ;
ainsi, si un utilisateur distant a plusieurs souscriptions, il est impossible de
les lancer toutes dans une mme transaction laide de START
SUBSCRIPTION.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Aucun commit nest effectu automatiquement par cette instruction.
Voir aussi Instruction START SUBSCRIPTION [SQL Remote] la page 660
Exemple Linstruction suivante rinitialise les souscriptions de lutilisateur distant
SamS :
REMOTE RESET SamS

602
Chapitre 4. Instructions SQL

Instruction REMOTE JAVA


Description Supprimer une classe ou un fichier Jar dune base de donnes. Une fois
supprime, une classe ne peut plus tre utilise comme colonne, ni comme
type de variable.
La classe ou le fichier Jar doivent avoir t installs.
Syntaxe REMOVE JAVA classes__supprimer

classes__supprimer :
CLASS nom_classe_java [, nom_classe_java, . . .]
| JAR nom_jar [, nom_jar , . . .]

Paramtres CLASS Le paramtre nom_classe_java indique le nom dune ou de


plusieurs classes Java supprimer. Ces classes doivent tre installes dans la
base de donnes courante.
JAR Le paramtre nom_jar est une chane de caractres dune longueur
maximale de 255.
Chaque paramtre nom_fichier_jar doit tre identique au paramtre
nom_fichier_jar dun fichier jar de la base de donnes courante. Cette
condition est vrifie par comparaison des chanes de caractres, en fonction
des rgles dfinies dans le systme SQL.
Utilisation Supprime de la base de donnes une classe ou un fichier Jar.
Autorisations Vous devez dtenir les droits DBA.
Non prise en charge par Windows CE.
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise. Il existe
une fonctionnalit similaire dans Adaptive Server Enterprise qui utilise
des transactions imbriques.
Exemple Linstruction ci-dessous supprime de la base de donnes courante une classe
Java appele Demo.
REMOVE JAVA CLASS Demo

603
Instruction REORGANIZE TABLE
Description Dfragmenter des tables lorsquune reconstruction totale de la base de
donnes est impossible en raison de lexigence daccs permanent.
Syntaxe REORGANIZE TABLE [ propritaire.]nom_table
[ { PRIMARY KEY
| FOREIGN KEY nom_cl_trangre
| INDEX nom_index }
| ORDER {ON | OFF}
]

Paramtres PRIMARY KEY Rorganise lindex de cl primaire de la table.


FOREIGN KEY Rorganise la cl trangre spcifie.
INDEX Rorganise lindex spcifi.
Option ORDER Avec ORDER ON (valeur par dfaut), les donnes sont
classes par index clusteris, le cas chant. Sil nexiste pas dindex
clusteris, les donnes sont classes par valeurs de cl primaire. Avec
ORDER OFF, elles sont classes par cl primaire.
Pour plus dinformations sur les index clusteriss, reportez-vous la
section Utilisation dindex clusteriss [ASA - Guide de lutilisateur SQL,
page 68].

Utilisation La fragmentation de la table peut nuire aux performances. Utilisez cette


instruction pour dfragmenter des lignes dans une table ou compacter des
index qui ont t fragments par les instructions DELETE. Elle peut
galement rduire le nombre total de pages utilises pour stocker la table et
ses index, et diminuer le nombre de niveaux dune arborescence dindex.
Toutefois, elle ne rduira pas la taille totale du fichier de base de donnes. Il
est recommand dutiliser les procdures systme sa_table_fragmentation et
sa_index_density pour slectionner les tables ncessitant un traitement.
Si aucun index ou aucune cl nest spcifi(e), le processus de rorganisation
dfragmente les lignes de la table en supprimant puis en rinsrant des
groupes de lignes. Pour chaque groupe, un verrou exclusif est pos sur la
table. Une fois le groupe trait, le verrou est libr puis repos (aprs attente
si ncessaire), rendant ainsi la table accessible pour dautres connexions. Les
points de reprise sont suspendus tant que le groupe est en cours de
traitement ; une fois le traitement termin, un point de reprise peut tre
dclench. Les lignes sont traites dans lordre par cl primaire (si existante)
ou par index clusteris. Si la table ne comporte ni cl primaire, ni index
clusteris, une erreur se produit. Les lignes traites sont rinsres la fin de
la table ; elles sont clusterises par la cl primaire la fin du processus.
Notez que la quantit de travail est toujours la mme, quel que soit le mode

604
Chapitre 4. Instructions SQL

de fragmentation initiale des lignes.


Si un index ou une cl est spcifi(e), il ou elle est trait(s). Cette version de
linstruction ne peut tre utilise quavec des bases de donnes cres avec
Adaptive Server Anywhere version 7.0 ou versions ultrieures. Pendant la
dure de lopration, un verrou exclusif est pos sur la table et les points de
reprise sont suspendus. Toute tentative daccs la table par dautres
connexions occasionnera un blocage ou chouera, cela dpend du paramtre
dfini pour loption BLOCKING. La dure du verrou est rduite en prlisant
les pages dindex avant de poser le verrou exclusif.
Etant donn que les deux formes de rorganisation peuvent modifier de
nombreuses pages, le journal de point de reprise peut atteindre une taille
importante. Pour les bases de donnes cres avec la version 7.0 ou des
versions antrieures, la taille du fichier de base de donnes risque
daugmenter. Pour les bases de donnes cres avec la version 8.0 ou une
version ultrieure, la taille du fichier de base de donnes naugmentera que
temporairement car le journal de point de reprise est supprim lors de larrt
et le fichier est tronqu au point correspondant. En outre, les pages de la
table risquent dtre alloues de manire plus contige pour les bases de
donnes de la version 8.0 ou dune version ultrieure.
Aucune des deux versions linstruction nest consigne dans le journal de
transactions.
Autorisations Vous devez tre soit le propritaire de la table, soit un utilisateur dtenant
les droits DBA.

Aucune prise en charge sous Windows CE.

Effets secondaires Avant le dmarrage de la rorganisation, un point de reprise est dfini afin
doptimiser le nombre de pages disponibles.
Exemples Linstruction suivante rorganise lindex de cl primaire de la table
employee :
REORGANIZE TABLE employee
PRIMARY KEY

Linstruction suivante rorganise les pages de la table employee :


REORGANIZE TABLE employee

Linstruction suivante rorganise lindex ix_prod_name sur la table product :


REORGANIZE TABLE product
INDEX ix_prod_name

Linstruction suivante rorganise la cl trangre ky_dept_id de la table


employee :

605
REORGANIZE TABLE employee
FOREIGN KEY ky_dept_id

606
Chapitre 4. Instructions SQL

Instruction RESIGNAL
Description Signaler nouveau une condition dexception.
Syntaxe RESIGNAL [ nom_exception ]

Utilisation Incluse dans une routine de gestion dexceptions, linstruction RESIGNAL


vous permet de quitter linstruction compose avec lexception toujours
active ou de quitter en signalant une autre exception dsigne. Lexception
sera gre par une autre routine de gestion dexceptions ou renvoye
lapplication. Les actions de la routine de gestion dexceptions prcdant
linstruction RESIGNAL ne sont pas conserves.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction SIGNAL la page 654
Instruction BEGIN la page 324
Utilisation de routines de gestion des exceptions dans les procdures et
les triggers [ASA - Guide de lutilisateur SQL, page 750]
Instruction RAISERROR [T-SQL] la page 596
Normes et compatibilit SQL/92 Fonctionnalit de module stock de manire permanente.

SQL/99 Fonctionnalit de module stock de manire permanente.


Sybase Non prise en charge par Adaptive Server Enterprise. La
signalisation des erreurs dans les procdures Transact-SQL seffectue
laide de linstruction RAISERROR.

Exemple Le fragment ci-dessous renvoie lapplication toutes les exceptions, except


celles du type Colonne non trouve.
...
DECLARE COLUMN_NOT_FOUND EXCEPTION
FOR SQLSTATE 52003;
...
EXCEPTION
WHEN COLUMN_NOT_FOUND THEN
SET message=Column not found;
WHEN OTHERS THEN
RESIGNAL;

607
Instruction RESTORE DATABASE
Description Restaurer une base de donnes sauvegarde partir dune archive.
Syntaxe RESTORE DATABASE nom_fichier
FROM racine_archivage
[ CATALOG ONLY |
[ [ RENAME nom_dbspace TO nom_nouveau_dbspace ] . . .] ]
[ HISTORY { ON | OFF } ]

nom_fichier : { chane | variable }


racine_archivage : { chane | variable }
nom_nouveau_dbspace : { chane | variable }

Paramtres Clause CATALOG ONLY Rcupre des informations sur larchive spcifie
et les place dans le fichier historique de sauvegarde (backup.syb ), mais ne
restaure aucune donne partir de larchive.
Clause RENAME Spcifie un nouvel emplacement dans lequel restaurer
chaque dbspace.
Clause HISTORY Chaque opration RESTORE DATABASE ajoute par
dfaut une ligne dans le fichier backup.syb. Vous pouvez empcher toute
mise jour de ce fichier en spcifiant HISTORY OFF. Cette option peut
savrer utile dans les cas suivants :
oprations RESTORE DATABASE frquentes ;
absence de procdure darchivage ou de suppression rgulire du fichier
backup.syb ;
espace disque trs limit.

Utilisation Chaque opration RESTORE DATABASE met jour un fichier historique


nomm backup.syb.
Pour plus dinformations sur le fichier backup.syb, reportez-vous la
section Variable denvironnement ASLOGDIR [ASA - Guide
dadministration, page 306].

La clause RENAME permet de modifier lemplacement de restauration de


chaque dbspace. Dans une clause RENAME, le nom du dbspace ne peut pas
tre SYSTEM ou TRANSLOG.
RESTORE DATABASE remet en place la base de donnes qui est en cours
de restauration. Si vous avez besoin de sauvegardes incrmentales,
servez-vous du format dimage de la commande BACKUP et ne sauvegardez
que le journal de transactions ; en revanche, les sauvegardes dimage ne sont
pas supportes sur bande.

608
Chapitre 4. Instructions SQL

Autorisations Les autorisations requises pour excuter cette instruction sont dfinies via la
ligne de commande du serveur, avec loption -gu. Par dfaut, les droits DBA
sont requis.
Cette instruction nest pas prise en charge sous Windows CE.
Pour plus dinformations, reportez-vous la section Option de serveur
-gu [ASA - Guide dadministration, page 165].
Effets secondaires Aucun.
Voir aussi Instruction BACKUP la page 319
Sauvegarde et reprise [ASA - Guide dadministration, page 407]
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non prise en charge par Adaptive Server Enterprise.


Windows CE Non prise en charge sur la plate-forme Windows CE.
Exemple Lexemple qui suit restaure une base de donnes partir dun lecteur de
bande Windows NT. Le nombre de barres obliques inverses ncessaires
dpend de la base de donnes laquelle vous tes connect lors de
lexcution de RESTORE DATABASE. La base de donnes a une incidence
sur la valeur de loption ESCAPE_CHARACTER. Normalement, cette
valeur est ON, mais dans utility_db, elle est OFF. Si vous tes connect
une base de donnes autre quutility_db, des barres obliques inverses
supplmentaires sont ncessaires.
RESTORE DATABASE d:\\dbhome\\cust.db
FROM \\\\.\\tape0

609
Instruction RESUME
Description Reprendre lexcution dun curseur qui renvoie des jeux de rsultats.
Syntaxe RESUME nom_curseur

nom_curseur : identificateur ou var_hte

Utilisation Cette instruction permet de reprendre lexcution dune procdure qui


renvoie des jeux de rsultats. Lexcution se poursuit jusquau jeu de
rsultats suivant (instruction SELECT sans clause INTO). Si la procdure se
termine sans quaucun jeu de rsultats nait t trouv, lavertissement
SQLSTATE_PROCEDURE_COMPLETE est mis. Cet avertissement est
galement mis lorsque vous rouvrez (RESUME) un curseur associ une
instruction SELECT.
Autorisations Le curseur doit avoir t prcdemment ouvert.
Effets secondaires Aucun.
Voir aussi Instruction DECLARE CURSOR [ESQL] [SP] la page 456
Renvoi de rsultats partir de procdures [ASA - Guide de lutilisateur
SQL, page 735]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.

Exemple Voici des exemples Embedded SQL :


1. EXEC SQL RESUME cur_employee;
2. EXEC SQL RESUME :cursor_var;

Voici un exemple Interactive SQL :


CALL sample_proc();
RESUME ALL;

610
Chapitre 4. Instructions SQL

Instruction RETURN
Description Quitter une fonction ou une procdure inconditionnellement, avec renvoi
ventuel dune valeur.
Syntaxe RETURN [ expression ]

Utilisation Une instruction RETURN provoque une sortie immdiate de la fonction ou


de la procdure. Si vous spcifiez expression, la valeur correspondante est
renvoye en tant que valeur de la fonction ou de la procdure.
Les instructions suivant une instruction RETURN ne sont pas excutes.
Au sein dune fonction, lexpression doit tre du mme type de donnes que
le type RETURNS de cette fonction.
RETURN sutilise dans les procdures compatibles avec Transact-SQL ; elle
renvoie un code derreur dentier.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction CREATE FUNCTION la page 376
Instruction CREATE PROCEDURE la page 390
Instruction BEGIN la page 324
Normes et compatibilit SQL/92 Fonctionnalit de module stock de manire permanente.

SQL/99 Fonctionnalit de module stock de manire permanente.


Sybase Les procdures Transact-SQL utilisent linstruction RETURN
pour renvoyer un code derreur dentier.
Exemple Cette fonction renvoie le produit de trois nombres :
CREATE FUNCTION product (
a numeric,
b numeric,
c numeric )
RETURNS numeric
BEGIN
RETURN ( a * b * c );
END

Calcul du produit de trois nombres :


SELECT product (2, 3, 4)

product(2, 3, 4)

24

611
La procdure ci-aprs recourt linstruction RETURN pour viter
dexcuter une requte complexe inutile :
CREATE PROCEDURE customer_products
( in customer_id integer DEFAULT NULL)
RESULT ( id integer, quantity_ordered integer )
BEGIN
IF customer_id NOT IN (SELECT id FROM customer)
OR customer_id IS NULL THEN
RETURN
ELSE
SELECT product.id,sum(
sales_order_items.quantity )
FROM product,
sales_order_items,
sales_order
WHERE sales_order.cust_id=customer_id
AND sales_order.id=sales_order_items.id
AND sales_order_items.prod_id=product.id
GROUP BY product.id
END IF
END

612
Chapitre 4. Instructions SQL

Instruction REVOKE
Description Supprimer des autorisations pour les utilisateurs spcifis.
Syntaxe 1 REVOKE valeur_spciale, . . . FROM id_utilisateur , . . .

valeur_spciale :
CONNECT
| DBA
| INTEGRATED LOGIN
| GROUP
| MEMBERSHIP IN GROUP id_utilisateur , . . .
| RESOURCE
Syntaxe 2 REVOKE valeur_table, . . .
ON [ propritaire.]nom_table
FROM id_utilisateur , . . .
valeur_table :
ALL [PRIVILEGES]
| ALTER
| DELETE
| INSERT
| REFERENCES [ ( nom_colonne, . . .) ]
| SELECT [ ( nom_colonne, . . .) ]
| UPDATE [ ( nom_colonne, . . .) ]

Syntaxe 3 REVOKE EXECUTE


ON [ propritaire.]nom_procdure
FROM id_utilisateur , . . .

Utilisation Linstruction REVOKE supprime les autorisations accordes laide de


linstruction GRANT. La syntaxe 1 est utilise pour rvoquer des
autorisations utilisateur particulires. La syntaxe 2 sert rvoquer des
autorisations octroyes sur des tables. La syntaxe 3, quant elle, est utilise
pour rvoquer lautorisation dexcuter une procdure. REVOKE
CONNECT supprime un ID utilisateur dune base de donnes et dtruit
galement tout objet (table, vue, procdure, etc.) possd par cet utilisateur
ainsi que les autorisations accordes par lui. REVOKE GROUP rvoque
automatiquement lappartenance un groupe de tous les membres de ce
groupe.
Lorsque vous ajoutez un utilisateur dans un groupe, il hrite de toutes les
autorisations affectes ce groupe. Adaptive Server Anywhere ne vous
permet pas de rvoquer un sous-ensemble des autorisations dont un
utilisateur hrite du fait de son appartenance un groupe, car vous pouvez
seulement rvoquer les autorisations qui sont explicitement octroyes par le
biais dune instruction GRANT. Si vous avez besoin dautorisations

613
diffrentes selon les utilisateurs, vous pouvez crer des groupes diffrents
dots des autorisations appropries, ou octroyer explicitement chaque
utilisateur les autorisations ncessaires.
Lorsque vous octroyez ou rvoquez des autorisations pour un groupe sur des
tables, des vues ou des procdures, tous les membres du groupe hritent des
changements effectus. En revanche, les autorisations DBA, RESOURCE et
GROUP ne sont pas hrites : elles doivent tre attribues individuellement
chaque ID utilisateur qui en a besoin.
Si vous octroyez un utilisateur une autorisation doption GRANT, puis
rvoquez ultrieurement cette autorisation, vous rvoquez galement toutes
les autorisations que cet utilisateur a octroy dautres utilisateurs pendant
quil avait loption GRANT.
Autorisations Vous devez tre la personne ayant octroy les autorisations de rvoquer ou
possder les droits DBA.
Si vous rvoquez des autorisations de connexion ou des autorisations sur des
tables octroyes un autre utilisateur, ce dernier ne doit pas tre connect
la base de donnes. Vous ne pouvez pas revoquer des autorisations de
connexion octroyes lutilisateur DBO..
Effets secondaires Commit automatique.
Voir aussi Instruction GRANT la page 524
Normes et compatibilit SQL/92 La syntaxe 1 est une extension dun diteur. La syntaxe 2 est
une fonctionnalit dentre de gamme. La syntaxe 3 est une
fonctionnalit PSM (Persistent Stored Modules).

SQL/99 La syntaxe 1 est une extension propritaire. La syntaxe 2 est


une fonction principale. La syntaxe 3 est une fonctionnalit PSM
(Persistent Stored Modules).
Sybase Les syntaxes 2 et 3 sont supportes par Adaptive Server
Enterprise. Mais la syntaxe 1 nest pas supporte par Adaptive Server
Enterprise. Les modles de scurit et de gestion des utilisateurs sont
diffrents pour Adaptive Server Anywhere et pour Adaptive Server
Enterprise.

Exemple Rvocation de lautorisation octroye lutilisateur Dave de mettre jour la


table employee :
REVOKE UPDATE ON employee FROM dave;

Rvocation des autorisations RESOURCE de lutilisateur Jim :


REVOKE RESOURCE FROM Jim;

614
Chapitre 4. Instructions SQL

Rvocation du mappage de login intgr du profil utilisateur Administrateur :


REVOKE INTEGRATED LOGIN FROM Administrator;

Rvocation de lautorisation octroye au groupe Finance dexcuter la


procdure sp_customer_list.
REVOKE EXECUTE ON sp_customer_list
FROM finance;

Suppression de lID utilisateur FranW de la base de donnes.


REVOKE CONNECT FROM FranW

615
Instruction REVOKE CONSOLIDATE [SQL Remote]
Description Servez-vous de cette instruction pour rvoquer lautorisation octroye la
base de donnes consolide de recevoir des messages SQL Remote de la
base courante.
Syntaxe REVOKE CONSOLIDATE FROM id_utilisateur

Utilisation Les autorisations CONSOLIDATE doivent tre octroyes, au niveau dune


base de donnes distante, lID utilisateur reprsentant la base de donnes
consolide. Linstruction REVOKE CONSOLIDATE permet de supprimer
lID utilisateur associ la base consolide de la liste des utilisateurs
recevant des messages de la base courante.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Commit automatique. Suppression de toutes les souscriptions associes
lutilisateur.
Voir aussi Instruction REVOKE PUBLISH [SQL Remote] la page 617
Instruction REVOKE REMOTE [SQL Remote] la page 619
Instruction REVOKE REMOTE DBA [SQL Remote] la page 620
Instruction GRANT CONSOLIDATE [SQL Remote] la page 529
Procdure sp_revoque_consolidate [SQL Remote - Guide de lutilisateur,
page 469]

Exemple Linstruction suivante rvoque ltat consolid de lID utilisateur condb :


REVOKE CONSOLIDATE FROM condb

616
Chapitre 4. Instructions SQL

Instruction REVOKE PUBLISH [SQL Remote]


Description Servez-vous de cette instruction pour supprimer le statut dditeur courant
(CURRENT PUBLISHER) de lID utilisateur dsign.
Syntaxe REVOKE PUBLISH FROM id_utilisateur

Utilisation Chaque base de donnes dune installation SQL Remote est identifie dans
les messages sortants par un ID utilisateur publisher. Pour rechercher lID
utilisateur de lditeur actuel, recourez la constante spciale CURRENT
PUBLISHER. La requte suivante permet didentifier lditeur courant :
SELECT CURRENT PUBLISHER

Linstruction REVOKE PUBLISH met fin au statut diteur de lID


utilisateur dsign.
Ne supprimez pas le statut diteur (REVOKE PUBLISH) dune base de
donnes tant que celle-ci dispose de publications ou de souscriptions SQL
Remote actives.
Emettre une instruction REVOKE PUBLISH au niveau dune base de
donnes peut avoir plusieurs consquences sur une installation SQL Remote
:
Vous ne pourrez pas insrer de donnes dans les tables o la colonne
CURRENT PUBLISHER fait partie de la cl primaire. Les messages
sortants ne seront pas identifis avec un ID utilisateur diteur et, par
consquent, ils ne seront pas accepts par les bases de donnes
destinataires.
Si vous modifiez lID utilisateur diteur sur une base de donnes consolide
ou distante dune installation SQL Remote, assurez-vous que le nouvel ID
utilisateur diteur dtient les autorisations REMOTE sur toutes les bases
recevant des messages de la base concerne. Cette opration exige
gnralement de supprimer, puis de recrer toutes les souscriptions.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Commit automatique.
Voir aussi Instruction GRANT PUBLISH [SQL Remote] la page 531
Instruction REVOKE REMOTE [SQL Remote] la page 619
Instruction REVOKE REMOTE DBA [SQL Remote] la page 620
Instruction REVOKE CONSOLIDATE [SQL Remote] la page 616
Procdure sp_publisher [SQL Remote - Guide de lutilisateur, page 447]
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

617
Exemple REVOKE PUBLISH FROM publisher_ID

618
Chapitre 4. Instructions SQL

Instruction REVOKE REMOTE [SQL Remote]


Description Rvoquer lautorisation octroye un utilisateur de recevoir des messages
SQL Remote de la base courante.
Syntaxe REVOKE REMOTE FROM id_utilisateur , . . .

Utilisation Un ID utilisateur doit dtenir les autorisations REMOTE pour pouvoir


recevoir des messages, dans une installation de rplication SQL Remote.
Linstruction REVOKE REMOTE supprime un ID utilisateur de la liste des
utilisateurs recevant des messages de la base actuelle.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Commit automatique. Suppression de toutes les souscriptions associes
lutilisateur.
Voir aussi Instruction REVOKE PUBLISH [SQL Remote] la page 617
Instruction GRANT REMOTE [SQL Remote] la page 532
Instruction REVOKE REMOTE DBA [SQL Remote] la page 620
Instruction REVOKE CONSOLIDATE [SQL Remote] la page 616
Procdure sp_revoke_remote [SQL Remote - Guide de lutilisateur,
page 470]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.

Exemple REVOKE REMOTE FROM SamS

619
Instruction REVOKE REMOTE DBA [SQL Remote]
Description Octroyer des privilges DBA un ID utilisateur, mais uniquement lorsquil
se connecte par lintermdiaire de lagent de message.
Syntaxe 1 REVOKE REMOTE DBA
FROM id_utilisateur , . . .

Utilisation Les droits REMOTE DBA permettent lagent de message de disposer dun
accs total la base de donnes pour apporter les modifications contenues
dans les messages, tout en vitant les problmes de scurit relatifs la
distribution de mots de passe dID utilisateur.
Cette instruction annule les droits REMOTE DBA pour un ID
dutilisateur.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Commit automatique.
Voir aussi Instruction REVOKE PUBLISH [SQL Remote] la page 617
Instruction REVOKE REMOTE [SQL Remote] la page 619
Instruction GRANT REMOTE DBA [SQL Remote] la page 534
Instruction REVOKE CONSOLIDATE [SQL Remote] la page 616
Agent de message et scurit de rplication [SQL Remote - Guide de
lutilisateur, page 265]

Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.

620
Chapitre 4. Instructions SQL

Instruction ROLLBACK
Description Terminer une transaction et annuler les modifications apportes depuis le
dernier COMMIT ou ROLLBACK.
Syntaxe ROLLBACK [ WORK ]

Utilisation Une transaction est lunit logique de travail effectue sur une connexion de
base de donnes vers une base de donnes entre des instructions COMMIT
et ROLLBACK. Linstruction ROLLBACK met fin la transaction courante
et annule tous les changements apports la base de donnes depuis le
prcdent COMMIT ou ROLLBACK.
Autorisations Aucune.
Effets secondaires Ferme tous les curseurs non ouverts avec WITH HOLD.
Voir aussi Instruction COMMIT la page 341
Instruction ROLLBACK TO SAVEPOINT la page 622
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.
SQL/99 Fonction principale.
Sybase Prise en charge par Adaptive Server Enterprise.

621
Instruction ROLLBACK TO SAVEPOINT
Description Annuler les modifications effectues depuis une instruction SAVEPOINT.
Syntaxe ROLLBACK TO SAVEPOINT [nom_pointdesauvegarde]

Utilisation Linstruction ROLLBACK TO SAVEPOINT permet dannuler les


modifications effectues depuis la cration du point de sauvegarde
(SAVEPOINT). Les modifications antrieures sont conserves et restent en
attente.
nom_pointdesauvegarde est un identificateur pralablement spcifi dans
une instruction SAVEPOINT au sein de la transaction courante. Si vous
lomettez, cest le point de sauvegarde le plus rcent qui est utilis. Les
points de sauvegarde postrieurs au point de sauvegarde dsign sont
automatiquement librs.
Autorisations La transaction courante doit inclure une instruction SAVEPOINT
correspondante.
Effets secondaires Aucun.
Voir aussi Instruction BEGIN TRANSACTION la page 327
Instruction COMMIT la page 341
Instruction RELEASE SAVEPOINT la page 601
Instruction ROLLBACK la page 621
Instruction SAVEPOINT la page 626
Points de sauvegarde dans les transactions [ASA - Guide de lutilisateur
SQL, page 117]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Fonction principale/SQL extrieure au langage SQL basique.
Sybase Adaptive Server Enterprise ne prend pas en charge pas les
points de sauvegarde. Pour utiliser des fonctionnalits similaires qui sont
compatibles avec Adaptive Server Enterprise, vous pouvez utiliser des
transactions imbriques.
Pour plus dinformations sur les transactions imbriques,
reportez-vous la section Instruction BEGIN TRANSACTION la
page 327.

622
Chapitre 4. Instructions SQL

Instruction ROLLBACK TRANSACTION


Description Annuler toutes les modifications apportes depuis lexcution dune
instruction SAVE TRANSACTION.
Syntaxe ROLLBACK TRANSACTION [ nom_pointdesauvegarde ]

Utilisation Linstruction ROLLBACK TRANSACTION annule toutes les modifications


apportes depuis ltablissement dun point de sauvegarde au moyen de
SAVE TRANSACTION. Les modifications antrieures linstruction SAVE
TRANSACTION sont conserves et restent en attente.
Le nom_pointdesauvegarde est un identificateur pralablement spcifi dans
une instruction SAVE TRANSACTION au sein de la transaction courante.
Si nom_pointdesauvegarde est omis, toutes les modifications restantes sont
annules. Les points de sauvegarde postrieurs au point de sauvegarde
dsign sont automatiquement librs.
Autorisations Une opration SAVE TRANSACTION correspondante doit exister dans la
transaction en cours.
Effets secondaires Aucun
Voir aussi Instruction ROLLBACK TO SAVEPOINT la page 622
Instruction BEGIN TRANSACTION la page 327
Instruction COMMIT la page 341Instruction SAVE
TRANSACTION la page 625
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Prise en charge par Adaptive Server Enterprise.

Exemple Lexemple qui suit affiche cinq lignes ayant pour valeur 10, 20, etc.
Linstruction ROLLBACK TRANSACTION annule leffet de DELETE,
mais pas celui des oprations INSERT et UPDATE antrieures.
BEGIN
SELECT row_num INTO #tmp
FROM sa_rowgenerator( 1, 5 )
UPDATE #tmp SET row_num=row_num*10
SAVE TRANSACTION before_delete
DELETE FROM #tmp WHERE row_num >= 3
ROLLBACK TRANSACTION before_delete
SELECT * FROM #tmp
END

623
Instruction ROLLBACK TRIGGER
Description Annuler les modifications apportes un trigger.
Syntaxe ROLLBACK TRIGGER [ WITH instruction_raiserror ]

Utilisation Linstruction ROLLBACK TRIGGER annule les modifications apportes


un trigger, y compris les modifications de donnes ayant dclench le trigger
en question.
Une instruction RAISERROR peut ventuellement tre mise. Si tel est le
cas, une erreur est renvoye lapplication. Sinon, aucune erreur nest
renvoye.
Si une instruction ROLLBACK TRIGGER est utilise dans un trigger
imbriqu sans instruction RAISERROR, seuls le trigger le plus imbriqu et
linstruction ayant provoqu son dclenchement sont annuls.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction CREATE TRIGGER la page 438
Instruction ROLLBACK la page 621
Instruction ROLLBACK TO SAVEPOINT la page 622
Instruction RAISERROR [T-SQL] la page 596
Normes et compatibilit SQL/92 Extension de Transact-SQL.
SQL/99 Extension de Transact-SQL.
Sybase Prise en charge par Adaptive Server Enterprise.

624
Chapitre 4. Instructions SQL

Instruction SAVE TRANSACTION


Description Dfinir un point de sauvegarde au sein de la transaction courante.
Syntaxe SAVE TRANSACTION nom_pointdesauvegarde

Utilisation Etablir un point de sauvegarde dans la transaction courante. Le


nom_pointdesauvegarde est un identificateur quil est possible de dclarer
dans une instruction ROLLBACK TRANSACTION. Tous les points de
sauvegarde sont automatiquement dsactivs la fin de la transaction.
Pour plus dinformations, reportez-vous la section Points de
sauvegarde dans les transactions [ASA - Guide de lutilisateur SQL, page 117].
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Instruction SAVEPOINT la page 626
Instruction BEGIN TRANSACTION la page 327
Instruction COMMIT la page 341
Instruction ROLLBACK TRANSACTION la page 623
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Prise en charge par Adaptive Server Enterprise.

Exemple Lexemple qui suit affiche cinq lignes avec des valeurs 10, 20, etc.
Linstruction ROLLBACK TRANSACTION annule leffet de DELETE,
mais pas celui des oprations INSERT et UPDATE antrieures.
BEGIN
SELECT row_num INTO #tmp
FROM sa_rowgenerator( 1, 5 )
UPDATE #tmp SET row_num=row_num*10
SAVE TRANSACTION before_delete
DELETE FROM #tmp WHERE row_num >= 3
ROLLBACK TRANSACTION before_delete
SELECT * FROM #tmp
END

625
Instruction SAVEPOINT
Description Dfinir un point de sauvegarde au sein de la transaction courante.
Syntaxe SAVEPOINT [nom_pointdesauvegarde ]

Utilisation Etablir un point de sauvegarde dans la transaction courante. Le


nom_pointdesauvegarde est un identificateur quil est possible de dclarer
dans une instruction RELEASE SAVEPOINT ou ROLLBACK TO
SAVEPOINT. Tous les points de sauvegarde sont automatiquement librs
la fin de la transaction. Reportez-vous la section Points de sauvegarde
dans les transactions [ASA - Guide de lutilisateur SQL, page 117].
Les points de sauvegarde crs durant lexcution dun trigger ou dune
instruction compose atomique sont automatiquement librs la fin de
lopration.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction RELEASE SAVEPOINT la page 601
Instruction ROLLBACK TO SAVEPOINT la page 622
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Fonction principale/SQL extrieure au langage SQL basique.
Sybase Non prise en charge par Adaptive Server Enterprise. Pour
utiliser des fonctionnalits similaires qui sont compatibles avec Adaptive
Server Enterprise, vous pouvez utiliser linstruction SAVE
TRANSACTION.

626
Chapitre 4. Instructions SQL

Instruction SELECT
Description Rcuprer des informations dans la base de donnes.
Syntaxe [ WITH vues_temporaires ]
SELECT [ ALL | DISTINCT ] [ limitation_lignes ] liste_slection
[ INTO { liste_var_hte | liste_variables | nom_table } ]
[ FROM expression_table ]
[ WHERE condition_recherche ]
[ GROUP BY [ expression_group_by ]
[ HAVING condition_recherche ]
[ WINDOW nom_fentre AS spcif_fentre
[ , nom_fentre AS spcif_fentre ... ] ]
[ ORDER BY { expression | entier } [ ASC | DESC], . . . ]
[ FOR { UPDATE [ concurrence_curseurs ] | READ ONLY } ]
[ FOR XML mode_xml ]

vues_temporaires :
vue_normale, . . .
| RECURSIVE { vue_normale | vue_rcursive }, . . .

vue_normale :
nom_vue [ ( nom_colonne, . . . ) ]
AS ( sous_requte )

vue_rcursive :
nom_vue ( nom_colonne, . . . )
AS ( sous-requte_initiale UNION ALL sous-requte_rcursive )

limitation_lignes :
FIRST | TOP n [ START AT m ]

liste_slection :
{ nom_colonne | expression } [ [ AS ] nom_alias ], . . .
| *| fonction_fentre OVER { nom_fentre | spcif_fentre }

expression_group_by :
Pour plus dinformations, reportez-vous la section Clause GROUP BY
la page 535.
concurrence_curseurs :
BY { VALUES | TIMESTAMP | LOCK }

627
mode_xml :
RAW [ , ELEMENTS ] | AUTO [ , ELEMENTS ] | EXPLICIT
fonction_fentre :RANK ( )
| DENSE_RANK ( )
| PERCENT_RANK ( )
| CUME_DIST ( )
| ROW_NUMBER ( )
| fonction_agrgat

spcif_fentre :
( [nom-fentre ]
[ PARTITION BYrfrence_colonne [ clause_collate ]
[ , rfrence_colonne [ clause_collate ] ... ] ]
[ ORDER BY expression_order_by , ... ]
[ { ROWS | RANGE } { dbut_cadre_fentre | milieu_cadre_fentre } ]
)

dbut_cadre_fentre :
{ UNBOUNDED | expression_entier } PRECEDING
| CURRENT ROW

milieu_cadre_fentre :
BETWEEN limite_1_cadre_fentre
AND limite_2_cadre_fentre

limite_cadre_fentre :
dbut_cadre_fentre
| { UNBOUNDED | expression_entier } FOLLOWING

Paramtres WITH ou WITH RECURSIVE Dfinit une ou plusieurs expressions de table


communes, galement appeles vues temporaires. Ces expressions peut tre
non rcursives ou auto-rcursives. Les expressions de table communes
rcursives peuvent apparatre seules ou imbriques avec des expressions non
rcursives, condition que le mot-cl RECURSIVE soit spcifi. Les
expressions de table communes mutuellement rcursives ne sont pas prises
en charge.
Cette clause nest autorise que si linstruction SELECT apparat lun des
emplacements suivants :
Dans une instruction SELECT de niveau suprieur
Dans linstruction SELECT de niveau suprieur dune dfinition VIEW
Dans une instruction SELECT de niveau suprieur dans une instruction
INSERT
Les expressions rcursives se composent dune sous-requte initiale et dune
sous-requte rcursive. La requte initiale dfinit implicitement le schma de

628
Chapitre 4. Instructions SQL

la vue. La sous-requte rcursive doit contenir une rfrence la vue dans la


clause FROM. Au cours de chaque itration, cette rfrence renvoie
seulement aux lignes ajoutes dans la vue dans litration prcdente. La
rfrence ne doit pas apparatre dans la table fournissant des valeurs NULL
dans une jointure externe. Une expression de texte commune rcursive ne
doit pas utiliser de fonctions dagrgat ni contenir de clause GROUP BY,
ORDER BY ou DISTINCT.
La clause WITH nest pas prise en charge pour les tables distantes.
Pour plus dinformations, reportez-vous la section Expressions de
table communes [ASA - Guide de lutilisateur SQL, page 337].
ALL ou DISTINCT (mot-cl par dfaut) renvoie toutes les lignes qui
satisfont les clauses de linstruction SELECT. Si vous prcisez DISTINCT,
les lignes de rsultats en double sont limines. Dans la mesure o
lexcution de nombreuses instructions prend beaucoup plus de temps
lorsque le mot-cl DISTINCT est dclar, nutilisez ce dernier quen cas de
ncessit.
limitation_lignes Limite explicitement les lignes des requtes qui
comprennent des clauses ORDER BY. La valeur TOP doit tre une constante
ou une variable entire suprieure ou gale 0. La valeur START AT doit
tre une constante ou une variable entire suprieure 0.
Pour plus dinformations sur lutilisation des mots-cls FIRST et TOP,
reportez-vous la section Limitation explicite du nombre de lignes
renvoyes par une requte [ASA - Guide de lutilisateur SQL, page 276].
liste_select La liste de slection est une liste dexpressions spares par
une virgule, indiquant les lments extraire de la base de donnes. Un
astrisque (*) indique de slectionner toutes les colonnes de toutes les tables
dans la clause FROM.
Les fonctions dagrgat sont autorises dans la liste de slection (voir la
section Fonctions SQL la page 95). Les sous-requtes sont galement
autorises dans la liste de slection (voir la section Expressions la
page 17). Chaque sous-requte doit tre encadre par des parenthses.
Utilisez les noms dalias dans la requte pour reprsenter les expressions
avec alias.
Interactive SQL affiche les noms dalias en tte de chaque colonne extraite
par linstruction SELECT. Si lalias facultatif nest pas dclar aprs une
expression, Interactive SQL affiche lexpression.
INTO liste_var_hte Cette clause ne sutilise que dans Embedded SQL.
Elle spcifie lemplacement cible des rsultats de linstruction SELECT.

629
Chaque lment de la liste de slection doit tre associ une variable hte.
Les lments de la liste de slection respectent lordre des variables htes.
Chaque variable hte peut galement tre assortie dune variable indicateur
du systme hte, de sorte que le programme puisse indiquer si la valeur dun
lment de la liste de slection est dfini avec la valeur NULL.
INTO liste_variables Cette clause ne sutilise que dans les procdures et
les triggers. Elle spcifie lemplacement cible des rsultats de linstruction
SELECT. Chaque lment de la liste de slection doit tre associ une
variable. Les lments de la liste de slection respectent lordre des
variables.
INTO nom_table Cette clause est utilise pour crer une table et y insrer
des donnes.
Si le nom de la table commence par le signe #, une table temporaire est
cre. Sinon, une table sous-jacente permanente est cre. Pour crer des
tables permanentes, la requte doit rpondre aux conditions suivantes :
La liste_selection contient plus dun lment et la cible INTO est un
identificateur de nom_table unique, ou
La liste_slection contient un astrisque (*) et la cible INTO est spcifie
sous la forme propritaire.table.
Pour crer une table permanente une colonne, le nom de la table doit tre
spcifi sous la forme propritaire.table.
Cette instruction a pour effet secondaire de gnrer une validation
(COMMIT) avant excution. Les droits RESOURCE sont ncessaires pour
excuter cette instruction. Aucune autorisation nest octroye sur la nouvelle
table : cette instruction est une forme abrge de CREATE TABLE suivi de
INSERT ... SELECT.
Aucune cl primaire nest dfinie pour les tables cres laide de cette
instruction. Vous pouvez ajouter une cl primaire laide de linstruction
ALTER TABLE. Une cl primaire doit tre ajoute avant dappliquer des
instructions UPDATE ou DELETE la table. Dans le cas contraire, toutes
les valeurs des colonnes seront enregistres dans le journal de transactions
pour les lignes concernes.
Clause FROM Les lignes sont extraites des tables et des vues spcifies
dans expression_table. Une instruction SELECT utilise sans la clause
FROM permet dafficher la valeur des expressions non drives des tables.
Par exemple :
SELECT @@version

affiche la valeur de la variable globale @@version. Elle est quivalente :

630
Chapitre 4. Instructions SQL

SELECT @@version
FROM DUMMY

Pour plus dinformations, reportez-vous la section Clause FROM


la page 511.
Clause WHERE Cette clause spcifie les lignes slectionner dans les
tables nommes dans la clause FROM. Elle peut tre utilise pour tablir des
jointures entre plusieurs tables, la place dune phrase ON (qui fait partie de
la clause FROM).
Pour plus dinformations, reportez-vous aux sections Conditions de
recherche la page 24 et Clause FROM la page 511.
Clause GROUP BY Vous pouvez effectuer des regroupements par colonne,
par alias ou par fonction. Le rsultat de la requte contient une ligne pour
chaque ensemble de valeurs distinct dans les colonnes, les alias ou les
fonctions dsigns. Toutes les lignes contenant NULL sont traites comme
un ensemble unique. Les lignes de rsultats sont souvent appeles groupes :
en effet, le rsultat comporte une ligne pour chaque groupe de lignes de la
liste des tables. Pour affiner les rsultats, vous pouvez appliquer des
fonctions dagrgat ces groupes.
Si vous utilisez GROUP BY, la liste de slection (liste_select ), la clause
HAVING et la clause ORDER BY ne peuvent pas rfrencer
didentificateurs autres que ceux spcifis dans la clause GROUP BY. Cette
exception est due au fait que la liste de slection et la clause HAVING
peuvent contenir des fonctions dagrgat.
Clause HAVING Cette clause slectionne les lignes en fonction de valeurs
de groupe et non des valeurs de ligne individuelle. La clause HAVING ne
peut sutiliser que si linstruction contient une clause GROUP BY ou si la
liste de slection se compose uniquement de fonctions dagrgat. Tout nom
de colonne rfrenc dans la clause HAVING doit tre spcifi dans la
clause GROUP BY ou tre employ en tant que paramtre dune fonction
dagrgat dans la clause HAVING.
Clause ORDER BY Cette clause trie les rsultats dune requte. Vous
pouvez associer chaque lment de la liste ORDER BY ASC (pour un tri
par ordre croissant) ou DESC (pour un tri par ordre dcroissant). Si
lexpression est un entier n, les rsultats de la requte sont tris sur le n ime
lment de la liste de slection.
Le seul moyen de sassurer que les lignes soient renvoyes dans un ordre
particulier est dutiliser la clause ORDER BY. En labsence de clause
ORDER BY, Adaptive Server Anywhere renvoie les lignes dans lordre qui
est le plus efficace. Cela signifie que laspect des jeux de rsultats peut varier

631
en fonction du moment auquel vous avez accd pour la dernire fois la
ligne et aux autres facteurs.
En Embedded SQL, linstruction SELECT permet dextraire des rsultats de
la base de donnes et denregistrer les valeurs dans des variables htes via la
clause INTO. Linstruction SELECT ne doit renvoyer quune seule ligne.
Pour des requtes avec plusieurs lignes, utilisez les curseurs.
Clause FOR UPDATE ou FOR READ ONLY Cette clause spcifie si les
mises jour sont autorises par lintermdiaire dun curseur ouvert sur la
requte. Notez que cette clause ne peut pas tre employe avec la clause
FOR XML.
Si vous nutilisez pas de clause FOR dans linstruction SELECT, la
possibilit de mise jour est spcifie par lAPI. Pour ODBC et OLE DB, le
paramtre par dfaut est lecture seule. Pour JDBC, Open Client et
Embedded SQL, le paramtre par dfaut est mise jour.
Cette clause remplace linstruction DECLARE CURSOR dEmbedded SQL.
Toutefois, elle peut tre remplace par le paramtre de concurrence daccs
dans dautres interfaces de programmation. Dans ODBC et OLE DB, le
paramtre par dfaut lecture seule remplace la clause FOR, mais si vous le
changez, la clause FOR nest pas remplace. Dans JDBC et Open Client, le
paramtre courant remplace toujours la clause FOR, quil soit ou non le
paramtre par dfaut (curseurs modifiables).
La possibilit de mise jour de linstruction dpend du paramtre de
loption de base de donnes ANSI_UPDATE_CONSTRAINTS. Dautres
caractristiques de linstruction sont galement prises en compte ; il sagit
notamment de vrifier si linstruction contient une clause DISTINCT,
GROUP BY, HAVING, UNION, des fonctions dagrgat, des jointures ou
des vues non modifiables.
Pour plus dinformations sur la sensibilit du curseur, reportez-vous la
section Curseurs Adaptive Server Anywhere [ASA - Guide de
programmation, page 32].

Pour plus dinformations sur la concurrence daccs ODBC, consultez


les dtails de SQLSetStmtAttr dans la section Choix des caractristiques
dun curseur [ASA - Guide de programmation, page 268].
Pour plus dinformations sur loption de base de donnes
ANSI_UPDATE_CONSTRAINTS, reportez-vous la section Option
ANSI_UPDATE_CONSTRAINTS [compatibilit] [ASA - Guide
dadministration, page 692].

Clause FOR XML Cette clause indique que le jeu de rsultats doit tre
renvoy sous forme de document XML. Le format du code XML dpend du

632
Chapitre 4. Instructions SQL

mode indiqu. Notez que cette clause ne peut pas tre employe avec la
clause FOR UPDATE ou FOR READ ONLY.
Lorsque vous spcifiez le mode RAW, chaque ligne du jeu de rsultats est
reprsente sous forme dlment <row> XML, chaque colonne tant
rprsente comme un attribut de cet lment.
Le mode AUTO renvoie les rsultats de requte sous forme dlments XML
imbriqus. Chaque table rfrence dans la liste_slection est reprsente
comme un lment dans le langage XML. Lordre dimbrication des
lments dpend de lordre des rfrences aux tables dans la liste_slection.
Le mode EXPLICIT vous permet de contrler le format du document XML
gnr. Le mode EXPLICIT permet une plus grande souplesse dans
lattribution de noms aux lments et dans la dfinition de la structure
dimbrication que le mode RAW ou AUTO.
Pour plus dinformations sur lcriture dune requte en mode
EXPLICIT, reportez-vous la section Utilisation de FOR XML
EXPLICIT [ASA - Guide de lutilisateur SQL, page 574].
Pour plus dinformations sur lutilisation de la clause FOR XML,
reportez-vous la section Utilisation de la clause FOR XML pour extraire
des rsultats de requte en XML [ASA - Guide de lutilisateur SQL, page 565].
Utilisation Linstruction SELECT sert extraire des rsultats de la base de donnes.
Dans Interactive SQL, une instruction SELECT permet de consulter des
donnes de la base de donnes ou dexporter des donnes de la base dans un
fichier externe.
Une instruction SELECT peut galement tre employe dans des procdures
et des triggers, ainsi quen Embedded SQL. Accompagne de la clause
INTO, elle permet dextraire des rsultats de la base de donnes lorsque
linstruction SELECT ne renvoie quune seule ligne. Pour des requtes avec
plusieurs lignes, utilisez les curseurs.
Une instruction SELECT permet galement de renvoyer un jeu de rsultats
issus dune procdure.
Autorisations Vous devez dtenir lautorisation SELECT sur les tables et les vues
dsignes.
Effets secondaires Aucun.
Voir aussi Expressions la page 17
Clause FROM la page 511
Conditions de recherche la page 24
Opration UNION la page 676

633
Jointures : Recherche de donnes dans plusieurs tables [ASA - Guide de
lutilisateur SQL, page 287]

Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme. La complexit de


linstruction SELECT est telle quelle vous permet de vrifier chaque
clause par rapport la norme.
SQL/99 Fonction principale. La complexit de linstruction SELECT
est telle quelle vous permet de vrifier chaque clause par rapport la
norme. Par exemple, le mot-cl ROLLUP fait partie de la fonction T431.

Sybase Supporte par Adaptive Server Enterprise, avec certaines


diffrences de syntaxe.
Exemple Quel est le nombre demploys ?
SELECT count(*)
FROM employee

Liste de tous les clients et du montant total de leurs commandes :


SELECT company_name,
CAST( sum(sales_order_items.quantity *
product.unit_price) AS INTEGER) VALUE
FROM customer
JOIN sales_order
JOIN sales_order_items
JOIN product
GROUP BY company_name
ORDER BY VALUE DESC

Linstruction suivante montre une instruction SELECT en Embedded SQL :


SELECT count(*) INTO :size
FROM employee

634
Chapitre 4. Instructions SQL

Instruction SET
Description Affecter une valeur une variable SQL.
Syntaxe SET identificateur = expression

Utilisation Linstruction SET affecte une nouvelle valeur une variable. Cette variable
doit soit avoir t pralablement cre au moyen dune instruction
CREATE VARIABLE ou DECLARE, soit correspondre au paramtre
OUTPUT dune procdure. Le nom de variable peut utiliser de manire
facultative la convention Transact-SQL spcifiant quun signe @ prcde le
nom. Par exemple :
SET @localvar = 42

Il est possible dutiliser une variable dans une instruction SQL partout o un
nom de colonne est autoris. Si un nom de colonne existe du mme nom que
la variable, la valeur de la variable est utilise.
Les variables ne sont associes qu la connexion courante et disparaissent
lorsque que vous vous dconnectez de la base de donnes ou que vous
recourez linstruction DROP VARIABLE. Elles sont ignores par les
instructions COMMIT ou ROLLBACK.
Les variables sont ncessaires pour crer des objets texte ou binaires
volumineux associs des instructions INSERT ou UPDATE issues de
programmes en Embedded SQL ; en effet, les variables htes dEmbedded
SQL sont limites 32 767 octets.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction CREATE VARIABLE la page 447
Instruction DECLARE la page 455
Instruction DROP VARIABLE la page 488
Expressions la page 17
Normes et compatibilit SQL/92 Fonctionnalit de module stock de manire permanente.
SQL/99 Fonctionnalit de module stock de manire permanente.
Sybase Non prise en charge Dans Adaptive Server Enterprise, les
variables sont attribues laide de linstruction SELECT sans table ;
cette syntaxe Transact-SQL est galement supporte par Adaptive Server
Anywhere. Linstruction Set permet de dfinir des options de base de
donnes dans Adaptive Server Enterprise.
Exemple Le fragment de code suivant insre une grande valeur de type texte dans la
base de donnes :

635
EXEC SQL BEGIN DECLARE SECTION;
DECL_VARCHAR( 500 ) buffer;
/* Note: maximum DECL_VARCHAR size is 32765 */
EXEC SQL END DECLARE SECTION;

EXEC SQL CREATE VARIABLE hold_blob LONG VARCHAR;


EXEC SQL SET hold_blob = ;
for(;;) {
/* read some data into buffer ... */
size = fread( buffer, 1, 5000, fp );
if( size <= 0 ) break;
/* Does not work if data contains null chars */
EXEC SQL SET hold_blob = hold_blob || :buffer;
}
EXEC SQL INSERT INTO some_table VALUES( 1, hold_blob );
EXEC SQL DROP VARIABLE hold_blob;

Le fragment de code suivant insre une grande valeur binaire dans la base de
donnes :
EXEC SQL BEGIN DECLARE SECTION;
DECL_BINARY( 5000 ) buffer;
EXEC SQL END DECLARE SECTION;

EXEC SQL CREATE VARIABLE hold_blob LONG BINARY;


EXEC SQL SET hold_blob = ;
for(;;) {
/* read some data into buffer ... */
size = fread( &(buffer.array), 1, 5000, fp );
if( size <= 0 ) break;
buffer.len = size;
/* add data to blob using concatenation */
EXEC SQL SET hold_blob = hold_blob || :buffer;
}
EXEC SQL INSERT INTO some_table VALUES ( 1, hold_blob );
EXEC SQL DROP VARIABLE hold_blob;

636
Chapitre 4. Instructions SQL

Instruction SET [T-SQL]


Description Dfinir des options de base de donnes pour la connexion courante, dune
manire compatible avec Adaptive Server Enterprise.
Syntaxe SET nom_option valeur_option

Utilisation Les options disponibles sont les suivantes :

Nom doption Valeur de loption

ANSINULL ON | OFF

ANSI_PERMISSIONS ON | OFF

CLOSE_ON_ENDTRANS ON | OFF

DATEFIRST 1|2|3|4|5|6|7

QUOTED_IDENTIFIER ON | OFF

ROWCOUNT entier
SELF_RECURSION ON | OFF

STRING_RTRUNCATION ON | OFF
TEXTSIZE entier
TRANSACTION ISOLATION LEVEL 0|1|2|3

Dans Adaptive Server Anywhere, les options de base de donnes sont


dfinies laide de linstruction SET OPTION. Toutefois, Adaptive Server
Anywhere reconnat galement les options linstruction SET dAdaptive
Server Enterprise qui sont particulirement intressantes au niveau de la
compatibilit.
Les options suivantes peuvent tre dfinies laide de linstruction
Transact-SQL SET dans Adaptive Server Anywhere aussi bien que dans
Adaptive Server Enterprise :
SET ANSINULL { ON | OFF } Le processus par dfaut de comparaison
des valeurs NULL dans Adaptive Server Anywhere et Adaptive Server
Enterprise est diffrent. Lattribution de la valeur OFF ANSINULL
permet des comparaisons avec la valeur NULL compatibles avec
Transact-SQL.
Adaptive Server Anywhere supporte galement la syntaxe suivante :
SET ANSI_NULLS { ON | OFF }

637
SET ANSI_PERMISSIONS { ON | OFF } Dans Adaptive Server
Anywhere et Adaptive Server Enterprise, le comportement par dfaut
concernant les autorisations requises pour excuter une instruction
UPDATE ou DELETE contenant une rfrence de colonne est diffrent.
Lattribution de la valeur OFF ANSI_PERMISSIONS permet que les
autorisations sur UPDATE et DELETE soient compatibles avec
Transact-SQL.
SET CLOSE_ON_ENDTRANS { ON | OFF } Dans Adaptive Server
Anywhere et Adaptive Server Enterprise, le comportement par dfaut
concernant la fermeture des curseurs la fin dune transaction est
diffrent. Lattribution de la valeur OFF CLOSE_ON_ENDTRANS
permet la compatibilit avec Transact-SQL.

SET DATEFIRST { 1 | 2 | 3 | 4 | 5 | 6 | 7 } La valeur par dfaut est 7, ce


qui signifie que, par dfaut, le premier jour de la semaine est le dimanche.
Pour dfinir cette option de faon permanente, reportez-vous la section
Option FIRST_DAY_OF_WEEK [base de donnes] [ASA - Guide
dadministration, page 712].

SET QUOTED_IDENTIFIER { ON | OFF } Dtermine si les chanes


places entre guillemets sont interprtes comme identificateurs (ON) ou
comme chanes littrales (OFF). Pour plus dinformations sur cette
option, reportez-vous la section Dfinition doptions pour la
compatibilit Transact-SQL [ASA - Guide de lutilisateur SQL, page 522].

SET ROWCOUNT entier Loption Transact-SQL ROWCOUNT limite


lentier indiqu le nombre de lignes extraites pour les curseurs. Cela
concerne les lignes lues par repositionnement du curseur. Les lectures
intervenant au-del de cette limite renvoient un avertissement. La
dfinition de loption est prise en compte lors du renvoi du nombre estim
de lignes pour un curseur suite une demande OPEN.
SET ROWCOUNT limite aussi lentier indiqu le nombre de lignes
concernes par une instruction UPDATE ou DELETE recherche. Cela
permet par exemple dautoriser lexcution dinstructions COMMIT
intervalles rguliers afin de limiter la taille du journal des annulations et
le nombre de verrous de niveau table. Lapplication (ou la procdure)
peut avoir besoin de prvoir une boucle pour que les instructions
UPDATE/DELETE soient de nouveau excutes sur les lignes non
concernes par la premire opration. Un exemple est propos ci-dessous.

638
Chapitre 4. Instructions SQL

begin
declare @count integer
set rowcount 20
while(1=1) begin
update employee set emp_lname=new_name
where emp_lname <> old_name
/* Stop when no rows changed */
select @count = @@rowcount
if @count = 0 break
print string(Updated ,
@count, rows; repeating...)
commit
end
set rowcount 0
end

Dans Adaptive Server Anywhere, si la valeur de ROWCOUNT est


suprieure au nombre de lignes que peut afficher Interactive SQL, celui-ci
peut effectuer des extractions supplmentaires pour repositionner le
curseur. De la sorte, le nombre de lignes rellement affiches peut tre
infrieur celui demand. De plus, si des lignes font lobjet dune
nouvelle lecture en raison davertissement de troncature, le compte fourni
risque de ne pas tre prcis.
La valeur zro (0) redfinit loption de faon obtenir toutes les lignes.
SET SELF_RECURSION { ON | OFF } Loption self_recursion est
utilise dans les triggers pour autoriser (ON) ou empcher (OFF) des
oprations sur la table associe au trigger de dclencher dautres triggers.
SET STRING_RTRUNCATION { ON | OFF } Dans Adaptive Server
Anywhere et Adaptive Server Enterprise, la troncature des caractres
autre que des espaces suite laffectation de donnes de chane SQL
provoque des comportements diffrents. Lattribution de la valeur ON
STRING_RTRUNCATION autorise des comparaisons de chanes
compatibles avec Transact-SQL.
SET TEXTSIZE Spcifie la taille maximale (en octets) des donnes de
type texte ou image renvoyes avec une instruction SELECT. La variable
globale @@textsize stocke le paramtre actuel. Pour rtablir la taille par
dfaut (32 Ko), utilisez la commande suivante :
set textsize 0

SET TRANSACTION-ISOLATION-LEVEL { 0 | 1 | 2 | 3 } Dfinit le


niveau disolement de verrouillage pour la connexion courante, comme
indiqu dans la section Niveaux disolement et cohrence [ASA - Guide
de lutilisateur SQL, page 118]. Pour Adaptive Server Enterprise, seules les
valeurs 1 et 3 sont possibles. Pour Adaptive Server Anywhere, les valeurs
0, 1, 2 et 3 sont toutes correctes.

639
Pour assurer la compatibilit, Adaptive Server Anywhere admet galement
linstruction SET suivante pour loption PREFETCH, mais elle est
inoprante :
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction SET OPTION la page 644
Dfinition doptions pour la compatibilit Transact-SQL [ASA - Guide de
lutilisateur SQL, page 522]
Options de compatibilit [ASA - Guide dadministration, page 681]
Normes et compatibilit SQL/92 Extension de Transact-SQL.

SQL/99 Extension de Transact-SQL.


Sybase Adaptive Server Anywhere ne reconnat quun sous-ensemble
des options de base de donnes dAdaptive Server Enterprise.

640
Chapitre 4. Instructions SQL

Instruction SET CONNECTION [Interactive SQL]


[ESQL]
Description Modifier la base de donnes active.
Syntaxe SET CONNECTION [nom_connexion]

nom_connexion :
identificateur , chane ou var_hte

Utilisation Linstruction SET CONNECTION permet de remplacer la connexion active


de la base de donnes par connection-name. Ltat de la connexion courante
est sauvegard, puis repris, une fois la connexion de nouveau active. Si
connection-name est omis et sil existe une connexion qui na pas t
nomme, elle devient la connexion active.
Lorsque des curseurs sont ouverts en Embedded SQL, ils sont associs la
connexion courante. Une fois la connexion modifie, les noms de curseur de
la connexion prcdemment active deviennent inaccessibles. Les curseurs
restent actifs et en place ; ils redeviennent accessibles, une fois la connexion
associe de nouveau active.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction CONNECT [ESQL] [Interactive SQL] la page 344
Instruction DISCONNECT [ESQL] [Interactive SQL] la page 473
Normes et compatibilit SQL/92 Lutilisation dInteractive SQL est une extension propritaire.
Embedded SQL est une fonctionnalit de haut de gamme.

SQL/99 Lutilisation dInteractive SQL est une extension propritaire.


Lutilisation dEmbedded SQL est une fonction principale.

Sybase Prise en charge par Open Client/Open Server.


Exemple Lexemple suivant sapplique Embedded SQL :
EXEC SQL SET CONNECTION :conn_name;

A partir dInteractive SQL, activez la connexion conn1 :


SET CONNECTION conn1;

641
Instruction SET DESCRIPTOR [ESQL]
Description Dcrire les variables dune zone descripteur et y placer les donnes.
Syntaxe SET DESCRIPTOR nom_descripteur
{ COUNT = { entier | var_hte }
| VALUE { entier | var_hte } affectation [, . . .] }

affectation :
{ TYPE | SCALE | PRECISION | LENGTH | INDICATOR }
= { entier | var_hte }
| DATA = var_hte
Utilisation Linstruction SET DESCRIPTOR permet de dcrire les variables dune zone
descripteur et dy placer les donnes.
SET . . . COUNT dfinit le nombre de variables dcrites dans la zone
descripteur. La valeur de COUNT ne doit pas dpasser le nombre de
variables spcifi lors de lallocation de la zone descripteur.
La valeur { entier | var_hte } spcifie la variable de la zone descripteur sur
laquelle laffectation (ou les affectations) sont excutes.
Lors de lopration SET . . . DATA, une vrification du type est excute de
faon assurer que la variable hte et la variable du descripteur ont le mme
type de donnes. LONGVARCHAR et LONGBINARY ne sont pas pris en
charge par SET DESCRIPTOR ... DATA.
En cas derreur, le code est renvoy dans la SQLCA.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction ALLOCATE DESCRIPTOR [ESQL] la page 273
Instruction DEALLOCATE DESCRIPTOR [ESQL] la page 453
Zone descripteur SQL (SQLDA) [ASA - Guide de programmation,
page 195]

Normes et compatibilit SQL/92 Fonctionnalit de niveau intermdiaire.


SQL/99 Fonction principale/SQL extrieure au langage SQL basique.

Sybase Prise en charge par Open Client/Open Server.


Exemple Lexemple suivant dfinit le type de la colonne ayant la position col_num
dans sqlda :

642
Chapitre 4. Instructions SQL

void set_type( SQLDA *sqlda, int col_num, int new_type )


{
EXEC SQL BEGIN DECLARE SECTION;
int new_type1 = new_type;
int col = col_num;
EXEC SQL END DECLARE SECTION;
EXEC SQL SET DESCRIPTOR sqlda VALUE :col TYPE = :new_type1;
}

Pour un exemple, reportez-vous la section Instruction ALLOCATE


DESCRIPTOR [ESQL] la page 273.

643
Instruction SET OPTION
Description Modifier les valeurs des options de la base de donnes.
Syntaxe SET [ EXISTING ] [ TEMPORARY ] OPTION
[ id_utilisateur.| PUBLIC.]nom_option = [ valeur_option ]

id_utilisateur : identificateur | chane | var_hte

nom_option : identificateur | chane | var_hte

valeur_option : variable_hte (indicateur autoris)


| chane
| identificateur
| nombre
Utilisation Linstruction SET OPTION sert modifier les options qui se rpercutent sur
le comportement du serveur de base de donnes. En dfinissant la valeur
dune option, vous pouvez changer ce comportement pour lensemble des
utilisateurs ou pour un seul dentre eux. La porte de la modification peut
tre temporaire ou permanente.
Les classes doptions sont les suivantes :
Options de base de donnes gnrales
Compatibilit Transact-SQL
Options de base de donnes de rplication
Pour obtenir la liste et la description des options disponibles,
reportez-vous la section Options de base de donnes [ASA - Guide
dadministration, page 669].
Vous pouvez dfinir des options trois niveaux : public, utilisateur et
temporaire. Une option temporaire a priorit sur les autres, et les options
utilisateur ont priorit sur les options public. Si vous dfinissez une option
de niveau utilisateur pour lutilisateur courant, loption temporaire
correspondante est dfinie dans le mme temps.
Si vous utilisez le clavier EXISTING, les valeurs de loption ne peuvent pas
tre dfinies pour un ID utilisateur individuel, sauf sil existe dj une
dfinition dID utilisateur PUBLIC pour cette option.
Si vous spcifiez un ID utilisateur, la valeur doption sapplique cet
utilisateur (ou dans le cas dun ID utilisateur de groupe, aux membres de ce
groupe). Si vous spcifiez PUBLIC, la valeur de loption sapplique tous
les utilisateurs pour lesquels aucun paramtre individuel pour cette option
nest dfini. Par dfaut, la valeur de loption sapplique lID utilisateur
connect qui a mis linstruction SET OPTION.

644
Chapitre 4. Instructions SQL

Par exemple, linstruction suivante applique un changement doption


lutilisateur DBA si DBA est lutilisateur qui a mis cette instruction :
SET OPTION login_mode = mixed

Linstruction suivante applique la modification demande lID utilisateur


PUBLIC, cest--dire au groupe auquel appartiennent tous les utilisateurs :
SET OPTION Public.login_mode = standard

Seuls les utilisateurs possdant les droits DBA sont autoriss dfinir une
option pour lID utilisateur PUBLIC.
De plus, dans Embedded SQL, les options de base de donnes ne peuvent
tre dfinies que temporairement.
Les utilisateurs peuvent se servir de linstruction SET OPTION afin de
modifier les valeurs pour leur propre ID utilisateur. Vous pouvez dfinir une
valeur doption pour un ID utilisateur autre que le vtre uniquement si vous
dtenez les droits DBA.
Lajout du mot-cl TEMPORARY dans linstruction SET OPTION change
la dure de la modification. Par dfaut, la valeur doption est permanente :
elle reste en vigueur jusqu ce quelle soit explicitement change laide de
linstruction SET OPTION.
Lorsque linstruction SET TEMPORARY OPTION nest pas qualifie par
un ID utilisateur, la nouvelle valeur de loption nest valable que pour la
connexion active.
Lorsque linstruction SET TEMPORARY OPTION est utilise avec lID
utilisateur PUBLIC, la modification reste en vigueur aussi longtemps que la
base de donnes fonctionne. Lorsque la base de donnes est ferme, la valeur
permanente des options TEMPORARY du groupe PUBLIC est restaure.
La dfinition doptions temporaires pour lID utilisateur PUBLIC offre une
protection. Par exemple, lorsque loption LOGIN_MODE est active, la
base de donnes sappuie sur la scurit de login du systme sur lequel elle
fonctionne. Temporairement, son activation ne compromet pas la scurit
dune base de donnes base sur un domaine Windows en cas de fermeture
et de copie de cette base de donnes sur une machine locale. Le cas chant,
lactivation temporaire de loption LOGIN_MODE restaure sa valeur
permanente, laquelle peut tre Standard, un mode qui nautorise pas les
logins intgrs.
Si vous omettez la valeur de loption (valeur_option ), la dfinition de
loption est supprime de la base de donnes. Sil sagit dune option
personnelle, la valeur utilise reprend la dfinition PUBLIC. Si vous

645
supprimez une option TEMPORARY, la dfinition de loption redevient
permanente.

Attention
Vous ne pouvez pas changer les paramtres dune option pendant la lecture
de lignes partir dun curseur car vous risqueriez de dfinir incorrectement
un comportement. Par exemple, la modification du paramtre DATE_-
FORMAT pendant la lecture partir dun curseur entranerait la prsence
de formats de date diffrents dans les lignes du rsultat. Ne changez pas les
paramtres des options pendant lextraction de lignes.
Autorisations Aucune autorisation nest requise pour la dfinition de vos propres options.
Les droits DBA sont requis pour dfinir des options de base de donnes pour
un autre utilisateur ou pour PUBLIC.
Effets secondaires Si TEMPORARY nest pas spcifi, un commit automatique est excut.
Voir aussi Options de base de donnes [ASA - Guide dadministration, page 675]
Options de compatibilit [ASA - Guide dadministration, page 681]
Options de rplication [ASA - Guide dadministration, page 685]
Instruction SET OPTION [Interactive SQL] la page 647
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise. Adaptive
Server Anywhere ne reconnat pas certaines options dAdaptive Server
Enterprise utilisant linstruction SET.
Exemple Dfinition de loption de format de date avec la valeur ON :
SET OPTION public.date_format = Mmm dd yyyy;

Dfinition du paramtre par dfaut de loption de format de date :


SET OPTION public.date_format =;

Dfinition de loption wait_for_commit avec la valeur ON :


SET OPTION wait_for_commit = on;

Voici deux exemples Embedded SQL :


1. EXEC SQL SET OPTION :user.:option_name = :value;
2. EXEC SQL SET TEMPORARY OPTION Date_format = mm/dd/yyyy;

646
Chapitre 4. Instructions SQL

Instruction SET OPTION [Interactive SQL]


Description Modifier les valeurs des options Interactive SQL.
Syntaxe 1 SET [ TEMPORARY ] OPTION
[ id_utilisateur. | PUBLIC. ]nom_option = [ valeur_option ]

id_utilisateur : identificateur , chane ou var_hte

nom_option : identificateur , chane ou var_hte

valeur_option : var_hte (indicateur autoris), chane, identificateur ou


nombre
Syntaxe 2 SET PERMANENT

Syntaxe 3 SET

Utilisation SET PERMANENT (syntaxe 2) enregistre toutes les options


Interactive SQL en cours. Les dfinitions doptions sont automatiquement
tablies chaque dmarrage dInteractive SQL pour lID utilisateur courant.
La syntaxe 3 affiche tous les paramtres courants des options. Si des options
temporaires sont dfinies pour Interactive SQL ou pour le serveur de base de
donnes, elles saffichent ; sinon, cest loption avec sa dfinition
permanente qui saffiche.
Voir aussi Options Interactive SQL [ASA - Guide dadministration, page 687]

647
Instruction SET REMOTE OPTION [SQL Remote]
Description Servez-vous de cette instruction pour dfinir un paramtre de contrle de
message pour une liaison de message SQL Remote.
Syntaxe SET REMOTE nom_liaison OPTION
[ id_utilisateur.| PUBLIC.]nom_option_liaison = valeur_option_liaison

nom_liaison:
file | ftp | mapi | smtp | vim

nom_option_liaison:
option_commune | option_fichier | option_ftp
| option_mapi | option_smtp | option_vim

option_commune:
debug | output_log_send_on_error
| output_log_send_limit | output_log_send_now

option_fichier :
directory | unlink_delay

option_ftp:
active_mode | host | password | port | root_directory | user

option_mapi:
force_download | ipm_receive | ipm_send | profile

option_smtp:
local_host | pop3_host | pop3_password | pop3_userid
| smtp_host | top_supported

option_vim:
password | path | receive_all | send_vim_mail | userid

valeur_option_liaison:
chane
Paramtres id_utilisateur En labsence de spcification did_utilisateur, lditeur
courant est choisi.
Valeurs des options Les valeurs des options sont dpendantes de la liaison
de message. Pour plus dinformations, reportez-vous aux sections suivantes :
Systme de messagerie file [SQL Remote - Guide de lutilisateur, page 235].
Systme de messagerie ftp [SQL Remote - Guide de lutilisateur, page 236].

Systme de messagerie MAPI [SQL Remote - Guide de lutilisateur,


page 240].

648
Chapitre 4. Instructions SQL

Systme de messagerie SMTP [SQL Remote - Guide de lutilisateur,


page 238].

Systme de messagerie VIM [SQL Remote - Guide de lutilisateur,


page 242].

Utilisation Lagent de message enregistre les paramtres de liaison de message lorsque


lutilisateur les entre dans la bote de dialogue de liaison de message lors de
sa premire utilisation. Dans ce cas, il nest pas ncessaire dutiliser cette
instruction de faon explicite. Cette instruction est particulirement utile lors
de la prparation dune base de donnes consolide pour lextraction de
nombreuses bases.
Les noms des options appliquent la distinction majuscules/minuscules. Cette
distinction pour les valeurs doption dpend de chaque option : Les valeurs
boolennes sont insensibles la casse, tandis que la sensibilit la casse des
mots de passe, noms de rpertoire et autres chanes dpendent de celle du
systme de fichiers (pour les noms de rpertoire) ou de la base de donnes
(pour les ID utilisateur et les mots de passe).
Autorisations Vous devez dtenir les droits DBA. Lditeur peut dfinir ses propres options.
Effets secondaires Commit automatique.
Voir aussi Procdure sp_link_option [SQL Remote - Guide de lutilisateur, page 434]
Rsolution derreurs sur des sites distants [SQL Remote - Guide de
lutilisateur, page 246]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.
Exemples Linstruction suivante dfinit lhte FTP sur ftp.mycompany.com pour la
liaison ftp de lutilisateur myuser :
SET REMOTE FTP OPTION myuser.host = ftp.mycompany.com

649
Instruction SET SQLCA [ESQL]
Description Indiquer au prprocesseur SQL dutiliser une SQLCA diffrente de la sqlca
globale par dfaut.
Syntaxe SET SQLCA sqlca

sqlca : identificateur ou chane

Utilisation Linstruction SET SQLCA indique au prprocesseur SQL de recourir une


SQLCA diffrente de la sqlca globale par dfaut. La sqlca doit tre un
identificateur ou une chane qui est une rfrence de langage C pour un
pointeur SQLCA.
Le pointeur SQLCA courant est pass implicitement la bibliothque
dinterface de base de donnes pour chaque instruction Embedded SQL.
Toutes les instructions Embedded SQL qui suivent cette instruction dans le
fichier source C font appel la nouvelle SQLCA.
Cette instruction est ncessaire uniquement lorsque vous crivez un code
entrant (reportez-vous la section Gestion de la zone SQLCA pour le code
multithread ou r-entrant [ASA - Guide de programmation, page 177]). La zone
sqlca doit rfrencer une variable locale. Toute variable statique globale ou
appartenant un module est susceptible dtre modifie par une autre tche.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Gestion de la zone SQLCA pour le code multithread ou r-entrant [ASA
- Guide de programmation, page 177]

Normes et compatibilit SQL/92 Extension propritaire.


SQL/99 Extension propritaire.
Sybase Non supporte par Open Client/Open Server.
Exemple La fonction propritaire peut se trouver dans une DLL Windows. Chaque
application qui fait appel la DLL dispose de sa propre SQLCA.

650
Chapitre 4. Instructions SQL

an_sql_code FAR PASCAL ExecuteSQL( an_application *app, char


*com )
{
EXEC SQL BEGIN DECLARE SECTION;
char *sqlcommand;
EXEC SQL END DECLARE SECTION;
EXEC SQL SET SQLCA "&app->.sqlca";
sqlcommand = com;
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL EXECUTE IMMEDIATE :sqlcommand;
return( SQLCODE );
}

651
Instruction SETUSER
Description Autoriser un administrateur de base de donnes sarroger lidentit dun
autre utilisateur et activer la fonction de regroupement de zones de
connexion.
Syntaxe { SET SESSION AUTHORIZATION | SETUSER }
[ [ WITH OPTION ] id_utilisateur ]

Paramtres WITH OPTION Par dfaut, seules les autorisations (y compris


lappartenance un groupe) sont modifies. Si WITH OPTION est dclar,
les options de base de donnes actives sont remplaces par celles de
lid_utilisateur dans la base de donnes courante.
id_utilisateur LID utilisateur est un identificateur (syntaxe SETUSER) ou
une chane (syntaxe SET SESSION AUTHORIZATION). Pour plus
dinformations, reportez-vous aux sections Identificateurs la page 8 et
Chanes la page 10.
Utilisation Linstruction SETUSER simplifie ladministrateur des bases de donnes.
Elle autorise un utilisateur possdant les droits DBA sarroger lidentit
dun autre utilisateur de la base de donnes. Aprs avoir excut une
instruction SETUSER, vous pouvez vrifier lutilisateur que vous
reprsentez en excutant lune des commandes suivantes :
SELECT USER
SELECT CURRENT USER
Par ailleurs, vous pouvez galement excuter SETUSER depuis un serveur
dapplication pour profiter de la fonction de regroupement de connexions.
Cela permet de rduire le nombre de connexions distinctes effectuer et, par
consquent, amliore les performances.
Lorsquelle est dclare sans ID utilisateur, linstruction SETUSER annule
toutes les instructions SETUSER prcdentes.
Linstruction SETUSER ne peut pas tre utilise au sein dune procdure,
dun trigger, dune routine de gestion dvnement ou dun fichier batch.
Linstruction SETUSER permet de faire plusieurs oprations, notamment :
Cration dobjets Vous pouvez utiliser SETUSER pour crer un objet
de base de donnes qui doit appartenir un autre utilisateur.
Contrle des autorisations En sarrogeant lidentit dun autre
utilisateur, avec ses autorisations et son appartenance des groupes, un
utilisateur DBA peut tester les autorisations et attribuer un nom la
rsolution des requtes, des procdures, des vues, etc.

652
Chapitre 4. Instructions SQL

Protection de lenvironnement des administrateurs Lutilisateur


DBA est habilit effectuer toutes les oprations dans la base de
donnes. Si vous souhaitez ne pas effectuer daction outrepassant vos
prrogatives, connectez-vous avec linstruction SETUSER un ID
utilisateur possdant des autorisations plus limites.

Remarque
Linstruction SETUSER ne peut pas tre utilise au sein de procdures, de
triggers, dvnements ou de fichiers batch.
Autorisations Vous devez dtenir les droits DBA.
Voir aussi Instruction EXECUTE IMMEDIATE [SP] la page 495
Instruction GRANT la page 524
Instruction REVOKE la page 613
Instruction SET OPTION la page 644
Normes et compatibilit SQL/92 SET SESSION AUTHORIZATION est conforme la norme
SQL 92. SETUSER est une extension propritaire.
SQL/99 SET SESSION AUTHORIZATION est une fonction principale.
SETUSER est une extension propritaire.
Sybase Adaptive Server Enterprise supporte SETUSER, mais pas le
mot-cl WITH OPTIONS.
Exemple Les instructions suivantes, excutes par un utilisateur DBA, modifient lID
utilisateur en Joe, puis en Jane et enfin en DBA :
SETUSER "Joe"
// ... operations...
SETUSER WITH OPTION "Jane"
// ... operations...
SETUSER

Linstruction ci-aprs dfinit Jane comme utilisatrice. LID utilisateur est


fourni sous la forme dune chane plutt que dun identificateur.
SET SESSION AUTHORIZATION Jane

653
Instruction SIGNAL
Description Signaler une condition dexception.
Syntaxe SIGNAL nom_exception

Utilisation SIGNAL vous permet de signaler une exception. Pour plus dinformations
sur la gestion des exceptions, reportez-vous la section Utilisation de
routines de gestion des exceptions dans les procdures et les triggers [ASA -
Guide de lutilisateur SQL, page 750].

nom_exception Nom dune exception dclare laide dune instruction


DECLARE au dbut de linstruction compose courante. Lexception doit
correspondre une valeur SQLSTATE dfinie par le systme ou par
lutilisateur. Les valeurs SQLSTATE dfinies par lutilisateur doivent tre
comprises entre 99000 et 99999.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction DECLARE la page 455
Instruction RESIGNAL la page 607
Instruction BEGIN la page 324
Utilisation de routines de gestion des exceptions dans les procdures et
les triggers [ASA - Guide de lutilisateur SQL, page 750]
Normes et compatibilit SQL/92 Fonctionnalit de module stock de manire permanente.
SQL/99 Fonctionnalit de module stock de manire permanente.

Sybase Adaptive Server Enterprise ne prend pas en charge cette


instruction.

Exemple Linstruction compose ci-aprs dclare et signale une exception dfinie par
lutilisateur. Si vous excutez cet exemple partir dInteractive SQL, le
message saffiche dans le volet Messages.
BEGIN
DECLARE myexception EXCEPTION
FOR SQLSTATE 99001;
SIGNAL myexception;
EXCEPTION
WHEN myexception THEN
MESSAGE My exception signaled
TO CLIENT;
END

654
Chapitre 4. Instructions SQL

Instruction START DATABASE [Interactive SQL]


Description Dmarrer une base de donnes sur le serveur de base de donnes actif.
Syntaxe START DATABASE fichier_base
[ AS nom_basededonnes ]
[ ON nom_moteur ]
[ WITH TRUNCATE AT CHECKPOINT ]
[ FOR READ ONLY ]
[ AUTOSTOP { ON | OFF } ]
[ KEY cl ]

Paramtres Clause START DATABASE Le paramtre fichier_basededonnes est une


chane. Si un chemin relatif est fourni dans fichier_basededonnes, il est
relatif au rpertoire de dpart du serveur de base de donnes.
Clause AS Si nom_basededonnes nest pas spcifi, un nom par dfaut
est affect la base. Ce nom par dfaut est la racine du fichier de base de
donnes. Par exemple, une base de donnes stocke dans le fichier
C:\Database Files\asademo.db reoit, par dfaut, le nom asademo.
Clause ON Cette clause nest accepte que par Interactive SQL. Si le
paramtre nom_moteur nest pas spcifi, la base de donnes par dfaut est
le premier serveur dmarr parmi ceux qui sont dj actifs.
Clause WITH TRUNCATE AT CHECKPOINT Dmarre une base de
donnes avec la troncature de journal sur point de reprise active.
FOR READ ONLY Dmarre une base de donnes en mode lecture seule.
Clause AUTOSTOP Le paramtre par dfaut pour la clause AUTOSTOP
est ON (activ). Dans ce cas, la base de donnes est dcharge lorsque la
dernire connexion est interrompue. Si AUTOSTOP est dsactiv (valeur
OFF), la base nest pas dcharge.
Dans Interactive SQL, vous pouvez utiliser YES ou NO comme solutions
alternatives ON et OFF.
Clause KEY Si la base de donnes est crypte fortement, utilisez cette
clause pour saisir la valeur KEY (mot de passe).
Utilisation Dmarre une base de donnes spcifie sur le serveur actif.
Linstruction START DATABASE ne connecte pas lapplication courante
la base de donnes spcifie : une connexion explicite est ncessaire.
Interactive SQL accepte la clause ON qui permet le dmarrage de la base de
donnes sur un serveur diffrent du serveur actif.
Autorisations Les autorisations requises sont spcifies par loption de ligne de commande

655
-gd du serveur de base de donnes. Cette option est par dfaut gale all sur
le serveur de base de donnes personnel et DBA sur le serveur rseau.
Effets secondaires Aucun.
Voir aussi Instruction STOP DATABASE la page 664
Instruction CONNECT [ESQL] [Interactive SQL] la page 344
Option de serveur -gd [ASA - Guide dadministration, page 160]
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non applicable.
Exemple Dmarrez le fichier de base de donnes C:\Database Files\sample_2.db sur
le serveur courant.
START DATABASE c:\database files\sample_2.db

A partir dInteractive SQL, dmarrez le fichier de base de donnes


c:\Database Files\sample_2.db sur le serveur sample, sous le nom sam2.
START DATABASE c:\database files\sample_2.db
AS sam2
ON sample

656
Chapitre 4. Instructions SQL

Instruction START ENGINE [Interactive SQL]


Description Dmarrer un serveur de base de donnes.
Syntaxe START ENGINE AS nom_moteur [ STARTLINE chane_commandes ]

Utilisation Linstruction START ENGINE dmarre un serveur de base de donnes. Si


vous souhaitez spcifier un ensemble doptions pour le serveur, utilisez le
mot-cl STARTLINE avec une chane de commande. Les chanes de
commande admises sont celles qui sont conformes la description de ligne
de commande du serveur de base de donnes dans Serveur de base de
donnes [ASA - Guide dadministration, page 128].
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction STOP ENGINE la page 665
Serveur de base de donnes [ASA - Guide dadministration, page 128]
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non applicable.

Exemple Dmarrage dun serveur de base de donnes, nomm exemple, sans pour
autant dmarrer de base sur ce serveur :
START ENGINE AS sample

Lexemple suivant illustre lutilisation dune clause STARTLINE :


START ENGINE AS eng1 STARTLINE dbeng9 -c 8M

657
Instruction START JAVA
Description Dmarrer la machine virtuelle Java.
Syntaxe START JAVA

Utilisation Linstruction START JAVA dmarre la machine virtuelle Java. Elle sert
principalement charger la machine virtuelle un moment opportun afin
que, lorsque que lutilisateur commence utiliser les fonctionnalits Java, il
ny ait pas de pause initiale une fois que la machine est charge.
Autorisations Java dans la base de donnes doit tre install et la base de donnes doit tre
configure pour Java.
Cette instruction nest pas prise en charge sous Windows CE.
Effets secondaires Aucun.
Voir aussi Instruction STOP JAVA la page 666
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non applicable.
Exemple Dmarrage de la machine virtuelle Java.
START JAVA

658
Chapitre 4. Instructions SQL

Instruction START LOGGING [Interactive SQL]


Description Commencer la consignation des instructions SQL excutes dans un journal
de transactions.
Syntaxe START LOGGING nom_fichier

Utilisation Linstruction START LOGGING commence copier toutes les instructions


SQL excutes dans le journal que vous spcifiez. Si ce fichier nexiste pas,
Interactive SQL le cre. La consignation continue tant que vous ny mettez
pas fin de faon explicite avec linstruction STOP LOGGING ou que vous
ne terminez pas la session Interactive SQL active. Vous pouvez galement
dmarrer et arrter la consignation en cliquant sur SQL Dmarrer la
consignation et SQL Arrter la consignation.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction STOP LOGGING [Interactive SQL] la page 667
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Non applicable.


Exemple Dmarrage de la consignation dans un fichier appel nom_fichier.sql, situ
dans le rpertoire c:.
START LOGGING c:\filename.sql

659
Instruction START SUBSCRIPTION [SQL Remote]
Description Dmarrer une souscription une publication pour un utilisateur.
Syntaxe START SUBSCRIPTION
TO nom_publication [ ( valeur_souscription ) ]
FOR id_souscripteur , . . .

Paramtres nom_publication Nom de la publication laquelle lutilisateur souscrit.


Peut inclure le propritaire de cette publication.
valeur_souscription Chane compare lexpression de souscription de la
publication. Cette valeur est requise parce que chaque utilisateur peut
souscrire plus dune publication.
id_souscripteur ID utilisateur du souscripteur la publication. Cet
utilisateur doit souscrire la publication.
Utilisation Une souscription SQL Remote est dite lance lorsque des mises jour de
publication sont envoyes de la base de donnes consolide vers la base
distante.
Linstruction START SUBSCRIPTION fait partie dun ensemble
dinstructions de gestion des souscriptions. Linstruction CREATE
SUBSCRIPTION dfinit les donnes que le souscripteur doit recevoir.
Linstruction SYNCHRONIZE SUBSCRIPTION vrifie que la base
consolide et la base distante sont cohrentes lune par rapport lautre.
Linstruction START SUBSCRIPTION est requise pour lancer les messages
destins au souscripteur.
Les donnes se trouvant aux deux extrmits de la souscription doivent tre
cohrentes pour quune souscription puisse tre lance. Il est recommand
de recourir lutilitaire dextraction de base de donnes pour grer la
cration, la synchronisation et le lancement des souscriptions. Il vous vite,
en effet, dexcuter une instruction explicite START SUBSCRIPTION. En
outre, lagent de message ne lance les souscriptions quune fois quelles ont
t synchronises.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Commit automatique.
Voir aussi Instruction CREATE SUBSCRIPTION [SQL Remote] la page 417
Instruction REMOTE RESET [SQL Remote] la page 602
Instruction SYNCHRONIZE SUBSCRIPTION [SQL Remote] la
page 671
Procdure sp_subscription [SQL Remote - Guide de lutilisateur, page 471]
Normes et compatibilit SQL/92 Extension propritaire.

660
Chapitre 4. Instructions SQL

SQL/99 Extension propritaire.


Sybase Non applicable.

Exemple Linstruction suivante dmarre la souscription de lutilisateur SamS la


publication pub_contact.
START SUBSCRIPTION TO pub_contact
FOR SamS

661
Instruction START SYNCHRONIZATION DELETE
[MobiLink]
Description Redmarrer la consignation automatique des suppressions pour la
synchronisation MobiLink.
Syntaxe START SYNCHRONIZATION DELETE

Utilisation En gnral, Adaptive Server Anywhere et UltraLite consignent


automatiquement toutes les modifications apportes aux tables ou aux
colonnes faisant partie dune synchronisation, puis les tlchargent dans la
base de donnes consolide la synchronisation suivante. Vous pouvez
suspendre temporairement la consignation des oprations de suppression
avec linstruction STOP SYNCHRONIZATION DELETE. Linstruction
START SYNCHRONIZATION DELETE permet de redmarrer la
consignation automatique.
Lorsquune instruction STOP SYNCHRONIZATION DELETE est
excute, aucune des oprations de suppression excute ensuite sur cette
connexion nest synchronise. Leffet persiste jusqu ce quune instruction
START SYNCHRONIZATION DELETE soit excute. La rptition de
STOP SYNCHRONIZATION DELETE na aucun effet supplmentaire.
Une instruction START SYNCHRONIZATION DELETE unique redmarre
la consignation, quel que soit le nombre dinstructions STOP
SYNCHRONIZATION DELETE la prcdant.
Nutilisez pas START SYNCHRONIZATION DELETE si votre application
ne synchronise pas les donnes.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Aucun.
Voir aussi Instruction STOP SYNCHRONIZATION DELETE [MobiLink] la
page 669
Mthode StartSynchronizationDelete [UltraLite C++ - Guide de
lutilisateur, page 333]
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non applicable.
Exemple La squence suivante dinstructions SQL indique comment utiliser START
SYNCHRONIZATION DELETE et STOP SYNCHRONIZATION DELETE
:

662
Chapitre 4. Instructions SQL

-- Prevent deletes from being sent


-- to the consolidated database
STOP SYNCHRONIZATION DELETE;

-- Remove all records older than 1 month


-- from the remote database,
-- NOT the consolidated database
DELETE FROM PROPOSAL
WHERE last_modified < months( CURRENT TIMESTAMP, -1 )

-- Re-enable all deletes to be sent


-- to the consolidated database
-- DO NOT FORGET to start this
START SYNCHRONIZATION DELETE;

-- Commit the entire operation,


-- otherwise rollback everything
-- including the stopping of the deletes
commit;

663
Instruction STOP DATABASE
Description Arrter une base de donnes sur le serveur de base de donnes actif.
Syntaxe STOP DATABASE nom_basededonnes
[ ON nom_moteur ]
[ UNCONDITIONALLY ]

Paramtres Clause STOP DATABASE Le paramtre nom_basededonnes correspond


au nom dune base de donnes (autre que la base courante) sexcutant sur le
serveur courant.
Clause ON Cette clause nest accepte que par Interactive SQL. Si
nom_moteur nest pas spcifi dans Interactive SQL, une recherche portant
sur une base de donnes du nom spcifi est effectue au niveau de tous les
moteurs actifs.
Si cette instruction nest pas utilise dans Interactive SQL, la base de
donnes ne peut tre arrte que si elle est dmarre sur le serveur de base de
donnes courant.
Mot-cl UNCONDITIONALLY La base de donnes est arrte mme en
prsence de connexions la base. Par dfaut, la base de donnes nest pas
arrte si des connexions sont actives.
Utilisation Linstruction STOP DATABASE arrte une base de donnes spcifie sur le
serveur courant.
Autorisations Les autorisations requises sont spcifies par loption de ligne de commande
-gk du serveur de base de donnes. Cette option est par dfaut gale all sur
le serveur de base de donnes personnel et DBA sur le serveur rseau.
Vous ne pouvez pas appliquer STOP DATABASE la base de donnes
laquelle vous tes actuellement connect.
Effets secondaires Aucun.
Voir aussi Instruction START DATABASE [Interactive SQL] la page 655
Instruction DISCONNECT [ESQL] [Interactive SQL] la page 473
Option de serveur -gd [ASA - Guide dadministration, page 160]
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non applicable.
Exemple Arrt de la base de donnes exemple sur le serveur par dfaut :
STOP DATABASE sample

664
Chapitre 4. Instructions SQL

Instruction STOP ENGINE


Description Arrter un serveur de base de donnes.
Syntaxe STOP ENGINE [ nom_moteur ] [ UNCONDITIONALLY ]

Paramtres Clause STOP ENGINE Le paramtre nom_moteur nest utilisable que


dans Interactive SQL. Si vous nexcutez pas cette instruction dans
Interactive SQL, la base de donnes courante est arrte.
Mot-cl UNCONDITIONALLY Si la seule connexion au serveur de base de
donnes est la vtre, vous pouvez vous dispenser de spcifier
UNCONDITIONALLY. En revanche, si dautres connexions existent, vous
devez spcifier ce mot-cl pour que le serveur de base de donnes sarrte.
Utilisation Linstruction STOP ENGINE arrte le serveur de base de donnes spcifi.
Si le mot-cl UNCONDITIONALLY est indiqu, le serveur de base de
donnes est arrt, mme si des connexions sont encore actives. Par dfaut,
le serveur nest pas arrt si des connexions sont actives.
Autorisations Les autorisations relatives larrt dun serveur dpendent de loption -gk de
la ligne de commande du serveur de base de donnes. Les paramtres par
dfaut des serveurs personnel et rseau sont respectivement all et DBA.
Effets secondaires Aucun.
Voir aussi Instruction START ENGINE [Interactive SQL] la page 657
Option de serveur -gk [ASA - Guide dadministration, page 161]
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non applicable.

Exemple Arrt du serveur de base de donnes courant dans la mesure o il nexiste


pas dautres connexions.
STOP ENGINE

665
Instruction STOP JAVA
Description Arrter la machine virtuelle Java.
Syntaxe STOP JAVA

Utilisation Linstruction STOP JAVA dcharge la machine virtuelle Java lorsquelle


nest pas utilise. Elle permet essentiellement dconomiser les ressources
systme.
Autorisations Java dans la base de donnes doit tre install et la base de donnes doit tre
configure pour Java.
Cette instruction nest pas prise en charge sous Windows CE.
Effets secondaires Aucun.
Voir aussi Instruction START JAVA la page 658
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Non applicable.
Exemple Arrt de la machine virtuelle Java.
STOP JAVA

666
Chapitre 4. Instructions SQL

Instruction STOP LOGGING [Interactive SQL]


Description Arrter la consignation des instructions SQL dans la session en cours.
Syntaxe STOP LOGGING

Utilisation Linstruction STOP LOGGING met fin la consignation par


Interactive SQL de chaque instruction SQL excute dans un journal de
transactions. Vous pouvez lancer la consignation avec linstruction START
LOGGING. Vous pouvez galement dmarrer et arrter la consignation en
cliquant sur SQL. Dmarrer la consignation et SQL. Arrter la consignation.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction START LOGGING [Interactive SQL] la page 659
Exemple Lexemple suivant arrte la session de consignation en cours :
STOP LOGGING

667
Instruction STOP SUBSCRIPTION [SQL Remote]
Description Interrompre une souscription une publication pour un utilisateur.
Syntaxe STOP SUBSCRIPTION
TO nom_publication [ ( valeur_souscription ) ]
FOR id_souscripteur , . . .

Paramtres nom_publication Nom de la publication laquelle lutilisateur souscrit.


Peut inclure le propritaire de cette publication.
valeur_souscription Chane compare lexpression de souscription de la
publication. Cette valeur est requise parce que chaque utilisateur peut
souscrire plus dune publication.
id_souscripteur ID utilisateur du souscripteur la publication. Cet
utilisateur doit souscrire la publication.
Utilisation Une souscription SQL Remote est dite lance lorsque des mises jour de
publication sont envoyes de la base de donnes consolide vers la base
distante.
Linstruction STOP SUBSCRIPTION permet dempcher lenvoi de tout
autre message au souscripteur. Linstruction START SUBSCRIPTION est
requise pour relancer des messages destins au souscripteur. Toutefois,
vrifiez que la souscription est correctement synchronise avant le
redmarrage : aucun message na t oubli.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Commit automatique.
Voir aussi Instruction DROP SUBSCRIPTION [SQL Remote] la page 485
Instruction SYNCHRONIZE SUBSCRIPTION [SQL Remote] la
page 671
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Exemple Linstruction suivante dmarre la souscription de lutilisateur SamS la
publication pub_contact :
STOP SUBSCRIPTION TO pub_contact
FOR SamS

668
Chapitre 4. Instructions SQL

Instruction STOP SYNCHRONIZATION DELETE


[MobiLink]
Description Suspendre temporairement la consignation des suppressions pour la
synchronisation MobiLink.
Syntaxe STOP SYNCHRONIZATION DELETE

Utilisation En gnral, les bases de donnes distantes Adaptive Server Anywhere et


UltraLite consignent automatiquement toutes les modifications apportes
aux tables ou aux colonnes faisant partie dune synchronisation, puis les
tlchargent dans la base de donnes consolide la synchronisation
suivante. Cette instruction vous permet de suspendre temporairement la
consignation des modifications apportes une base de donnes distante
Adaptive Server Anywhere ou UltraLite.
Lorsquune instruction STOP SYNCHRONIZATION DELETE est
excute, aucune des oprations de suppression excute ensuite sur cette
connexion nest synchronise. Leffet persiste jusqu ce quune instruction
START SYNCHRONIZATION DELETE soit excute.
La rptition de STOP SYNCHRONIZATION DELETE na aucun effet
supplmentaire. Une instruction START SYNCHRONIZATION DELETE
unique redmarre la consignation, quel que soit le nombre dinstructions
STOP SYNCHRONIZATION DELETE la prcdant.
Cette commande peut savrer pratique pour apporter des corrections une
base de donnes distante, mais doit tre manie avec prcaution car elle
dsactive la synchronisation MobiLink.
Nutilisez pas STOP SYNCHRONIZATION DELETE si votre application
ne synchronise pas les donnes.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Aucun.
Voir aussi Mthode StartSynchronizationDelete [UltraLite C++ - Guide de
lutilisateur, page 333]
Mthode StopSynchronizationDelete [UltraLite C++ - Guide de
lutilisateur, page 334]
Instruction START SYNCHRONIZATION DELETE [MobiLink] la
page 662
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

669
Sybase Non applicable.
Exemple Pour un exemple, reportez-vous la section Instruction START
SYNCHRONIZATION DELETE [MobiLink] la page 662.

670
Chapitre 4. Instructions SQL

Instruction SYNCHRONIZE SUBSCRIPTION [SQL


Remote]
Description Servez-vous de cette instruction pour synchroniser une souscription pour un
utilisateur.
Syntaxe SYNCHRONIZE SUBSCRIPTION
TO nom_publication [ ( valeur_souscription ) ]
FOR utilisateur_distant, . . .

Paramtres nom_publication Nom de la publication laquelle lutilisateur souscrit.


Peut inclure le propritaire de cette publication.
valeur_souscription Chane compare lexpression de souscription de la
publication. Cette valeur est requise parce que chaque utilisateur peut
souscrire plus dune publication.
utilisateur_distant ID utilisateur du souscripteur la publication. Cet
utilisateur doit souscrire la publication.
Utilisation Une souscription SQL Remote est dite synchronise lorsque les donnes de
la base de donnes distante sont cohrentes avec celle de la base consolide,
de sorte que les mises jour de publication envoyes de la base consolide
vers la base distante ne provoquent ni conflits ni erreurs.
Pour la synchronisation dune souscription, une copie des donnes de la
publication sur la base consolide est envoye la base distante.
Linstruction SYNCHRONIZE SUBSCRIPTION effectue cette opration
via le systme de messagerie. Il est toutefois recommand de prfrer, dans
la mesure du possible, lutilitaire dextraction de base de donnes pour viter
dutiliser le systme de messagerie.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Commit automatique.
Voir aussi Instruction CREATE SUBSCRIPTION [SQL Remote] la page 417
Instruction START SUBSCRIPTION [SQL Remote] la page 660
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Exemple Linstruction suivante synchronise la souscription de lutilisateur SamS la
publication pub_contact :
SYNCHRONIZE SUBSCRIPTION
TO pub_contact
FOR SamS

671
Instruction SYSTEM [Interactive SQL]
Description Lancer un fichier excutable partir dInteractive SQL.
Syntaxe SYSTEM [chemin] nom_fichier

Utilisation Lance le fichier excutable spcifi.


Linstruction SYSTEM doit tenir sur une seule ligne.

Les commentaires ne sont pas admis la fin dune instruction SYSTEM.


Placez le chemin et le nom du fichier entre apostrophes.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction CONNECT [ESQL] [Interactive SQL] la page 344
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
Sybase Non applicable.
Exemple Linstruction suivante lance le programme Notepad, ce qui suppose que
lexcutable de Notepad figure dans le chemin :
SYSTEM notepad.exe

672
Chapitre 4. Instructions SQL

Instruction TRIGGER EVENT


Description Dclencher un vnement nomm. Lvnement peut tre dfini pour des
triggers dvnement ou constituer un vnement planifi.
Syntaxe TRIGGER EVENT nom_vnement [ ( param = valeur , . . . ) ]

Paramtres parm = valeur Lorsquune condition dclenchante entrane lexcution


dune routine de gestion dvnement, le serveur de base de donnes peut
fournir des informations de contexte cette dernire laide de la fonction
event_parameter. Linstruction TRIGGER EVENT permet de fournir
explicitement ces paramtres pour simuler un contexte pour la routine de
gestion dvnement.
Utilisation Les actions sont lies des conditions de trigger particulires ou des
planifications par le biais dune instruction CREATE EVENT. Utilisez
linstruction TRIGGER EVENT pour forcer lexcution dune routine de
gestion dvnement, indpendamment de la condition de trigger ou de
lheure planifie. TRIGGER EVENT nexcute pas de routines de gestion
dvnements dsactives.
Autorisations Vous devez dtenir les droits DBA.
Effets secondaires Aucun.
Voir aussi Instruction ALTER EVENT la page 283
Instruction CREATE EVENT la page 364
EVENT_PARAMETER (fonction systme) la page 155
Exemple Lexemple ci-aprs montre comment passer un paramtre de chane un
vnement. Lvnement affiche lheure laquelle il a t dclench sur la
console du serveur.
CREATE EVENT ev_PassedParameter
HANDLER
BEGIN
MESSAGE ev_PassedParameter - was triggered at || event_
parameter(time);
END;
TRIGGER EVENT ev_PassedParameter("Time"=string(current
timestamp));

673
Instruction TRUNCATE TABLE
Description Supprimer toutes les lignes dune table, sans supprimer la dfinition de la
table.
Syntaxe TRUNCATE TABLE [ propritaire.]nom_table

Utilisation Linstruction TRUNCATE TABLE permet de supprimer toutes les lignes


dune table. Cest lquivalent dune instruction DELETE sans clause
WHERE, si ce nest quaucun trigger nest dclench et que les suppressions
de lignes individuelles ne sont pas enregistres dans le journal de
transactions.
Aprs une instruction TRUNCATE TABLE, la structure de la table et tous
ses index continuent dexister et ce, jusqu lexcution dune instruction
DROP TABLE. Les dfinitions et les contraintes de colonne restent intactes,
et les triggers et les autorisations restent en vigueur.
Linstruction TRUNCATE TABLE est enregistre dans le journal de
transactions en tant quinstruction unique, au mme titre quune instruction
de dfinition de donnes. Les suppressions de lignes individuelles ne sont
pas consignes dans le journal.
Si loption TRUNCATE_WITH_AUTO_COMMIT est active (ON, valeur
par dfaut) et que tous les critres suivants sont satisfaits, une troncature
rapide de la table est excute :
Il nexiste pas de cls trangres diriges vers la table ou en provenant.
Linstruction TRUNCATE TABLE nest pas excute lintrieur dun
trigger.

Linstruction TRUNCATE TABLE nest pas excute lintrieur dune


instruction atomique.
En cas de troncature rapide, un COMMIT est excut avant et aprs
lopration.
Autorisations Vous devez tre le propritaire de la table, ou possder les droits DBA, ou
dtenir les autorisations ALTER sur la table.
Pour les tables de la base, linstruction TRUNCATE TABLE exige un accs
exclusif sur la table car lopration est atomique (soit toutes les lignes sont
supprimes, soit aucune ne lest). Cela signifie que les curseurs
prcdemment ouverts et rfrenant la table tronque doivent tre ferms et
quun COMMIT ou un ROLLBACK doit tre excut pour librer la
rfrence la table.

674
Chapitre 4. Instructions SQL

Pour les tables temporaires, chaque utilisateur possde sa propre copie de


donnes et laccs exclusif nest donc pas requis.
Effets secondaires Linstruction TRUNCATE TABLE ne dclenche pas les triggers de
suppression.
Si TRUNCATE_WITH_AUTO_COMMIT est active (ON), un COMMIT
est effectu avant et aprs la troncature de la table.
Comme les suppressions individuelles de lignes ne sont pas consignes dans
le journal de transactions, lopration TRUNCATE TABLE nest pas
rplique. Nutilisez pas cette instruction dans la rplication SQL Remote ou
dans une base de donnes distante MobiLink.
Si la table contient une colonne dfinie sur DEFAULT AUTOINCREMENT
ou DEFAULT GLOBAL AUTOINCREMENT, TRUNCATE TABLE
rinitialise la prochaine valeur disponible pour la colonne.
Dans les applications Embedded SQL UltraLite, utilisez linstruction
DELETE plutt que TRUNCATE TABLE pour supprimer toutes les lignes
dune table. TRUNCATE TABLE marque les lignes supprimer, mais
moins deffectuer une synchronisation, les lignes ne sont pas physiquement
supprimes de la base de donnes UltraLite.
Voir aussi Instruction DELETE la page 465
Option TRUNCATE_WITH_AUTO_COMMIT [base de donnes]
[ASA - Guide dadministration, page 760]

Normes et compatibilit SQL/92 Extension de Transact-SQL.


SQL/99 Extension de Transact-SQL.
Sybase Prise en charge par Adaptive Server Enterprise.

Exemple Suppression de toutes les lignes de la table department.


TRUNCATE TABLE department

675
Opration UNION
Description Combiner les rsultats de plusieurs instructions SELECT.
Syntaxe instruction_select
UNION [ ALL | DISTINCT ] instruction_select
[ UNION [ ALL | DISTINCT ] instruction_select ]
[ ORDER BY [ entier | nom_expression_liste_slection ] [ ASC | DESC ], . . .
]

Utilisation Vous pouvez combiner les rsultats de plusieurs instructions SELECT en un


rsultat plus important en utilisant lopration UNION. Les instructions
SELECT doivent comporter chacune le mme nombre dlments dans la
liste de slection et ne pas inclure de clause ORDER BY.
Les rsultats dUNION ALL correspondent aux rsultats combins des
diffrentes instructions SELECT. Les rsultats dUNION sont les mmes
que ceux dUNION ALL, except le fait que les lignes en double sont
limines. La suppression des doublons ncessitant un traitement
supplmentaire, il est conseill dutiliser, si possible, UNION ALL plutt
quUNION. UNION DISTINCT est identique UNION.
Si des lments correspondants dans deux listes de slection sont dots de
types de donnes diffrents, Adaptive Server Anywhere choisit un type de
donnes pour la colonne rsultat correspondante et convertit
automatiquement les colonnes de chaque instruction SELECT de faon
approprie.
La premire spcification de requte de lUNION sert dterminer les noms
faire correspondre avec la clause ORDER BY.
Les noms de colonne affichs sont les mmes que ceux qui le seraient pour
la premire instruction SELECT. Une autre faon de personnaliser les noms
de colonne du jeu de rsultats consiste utiliser la clause WITH sur
linstruction SELECT.
Autorisations Vous devez dtenir lautorisation SELECT pour chacune des instructions
SELECT.
Effets secondaires Aucun.
Voir aussi Instruction SELECT la page 627
Normes et compatibilit SQL/92 Entre de gamme.
SQL/99 Fonction principale.
Sybase Supporte par Adaptive Server Enterprise, qui reconnat
galement une clause COMPUTE.

676
Chapitre 4. Instructions SQL

Exemple Liste de tous les noms distincts des employs et des clients :
SELECT emp_lname
FROM Employee
UNION
SELECT lname
FROM Customer

677
Instruction UNLOAD
Description Exporter des donnes dune base de donnes dans un fichier externe au
format ascii.
Syntaxe UNLOAD instruction_select
TO nom_fichier
[ option_dchargement . . . ]

option_dchargement :
APPEND {ON|OFF}
| DELIMITED BY chane
| ESCAPE CHARACTER caractre
| ESCAPES {ON | OFF}
| FORMAT {ASCII | BCP}
| HEXADECIMAL {ON | OFF}
| QUOTES {ON | OFF}

nom_fichier : { chane | variable }

Paramtres nom_fichier Nom du fichier dans lequel doivent tre dcharges les
donnes. Comme les instructions sont excutes par le serveur de base de
donnes, les noms de fichier correspondent des fichiers se trouvant sur
cette machine serveur. Les noms relatifs indiqus spcifient des fichiers
relatifs au rpertoire de dpart du serveur de base de donnes. Pour
dcharger des donnes sur une machine cliente, reportez-vous la section
Instruction OUTPUT [Interactive SQL] la page 582.
Utilisation Linstruction UNLOAD permet dexporter le jeu de rsultats dune requte
dans un fichier dlimit par des virgules. Le jeu de rsultats nest pas class,
moins que la requte elle-mme ne contienne une clause ORDER BY.
Lorsque vous dchargez des colonnes du jeu de rsultats avec des donnes
de type binaire, UNLOAD crit des chanes hexadcimales de la forme
\xnnnn, o n est un nombre hexadcimal.
Pour obtenir la description des paramtres option_dchargement,
reportez-vous la section Instruction UNLOAD TABLE la page 680.
Lors du dchargement et du rechargement dune base de donnes
comportant des tables Proxy, crez une connexion externe pour associer
lutilisateur local lutilisateur distant, mme si lutilisateur emploie le
mme mot de passe pour les bases de donnes locales et distantes. Si vous ne
disposez pas dune connexion externe, le rechargement peut chouer car
vous ne pouvez pas vous connecter au serveur distant.
Pour plus dinformations sur les connexions externes, reportez-vous la
section Logins externes [ASA - Guide de lutilisateur SQL, page 658].

678
Chapitre 4. Instructions SQL

Lorsque loption APPEND a la valeur ON, les donnes dcharges sont


ajoutes la fin du fichier spcifi. Lorsque loption APPEND a la valeur
OFF, les donnes dcharges remplacent le contenu du fichier spcifi. Cette
option a la valeur OFF par dfaut.
Autorisations Les autorisations requises pour excuter une instruction UNLOAD sont
dfinies via la ligne de commande du serveur, par le biais de loption -gl.
Pour plus dinformations, reportez-vous la section Option de serveur
-gl [ASA - Guide dadministration, page 162].
Effets secondaires Aucun. La requte est excute au niveau disolement courant.
Voir aussi Instruction UNLOAD TABLE la page 680
Instruction OUTPUT [Interactive SQL] la page 582
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Adaptive Server Enterprise ne reconnat pas la fonction


UNLOAD.

679
Instruction UNLOAD TABLE
Description Exporter des donnes dune table de base de donnes dans un fichier externe
au format ascii.
Syntaxe UNLOAD [ FROM ] TABLE [ propritaire. ]nom_table TO nom_fichier
[ option_dchargement ...

option_dchargement :
APPEND{ON | OFF}
| DELIMITED BY chane
| ESCAPE CHARACTER caractre
| ESCAPES {ON | OFF}
| FORMAT {ASCII | BCP}
| HEXADECIMAL {ON | OFF}
| ORDER {ON | OFF}
| QUOTES {ON | OFF}

nom_fichier : { chane | variable }

Paramtres nom_fichier Nom du fichier dans lequel doivent tre dcharges les
donnes. Comme les instructions sont excutes par le serveur de base de
donnes, les noms de fichier correspondent des fichiers se trouvant sur
cette machine serveur. Les noms relatifs indiqus spcifient des fichiers
relatifs au rpertoire de dpart du serveur de base de donnes. Pour
dcharger des donnes sur une machine cliente, reportez-vous la section
Instruction OUTPUT [Interactive SQL] la page 582.
Option APPEND Lorsque loption APPEND a la valeur ON, les donnes
dcharges sont ajoutes la fin du fichier spcifi. Lorsque loption
APPEND a la valeur OFF, les donnes dcharges remplacent le contenu du
fichier spcifi. Cette option a la valeur OFF par dfaut.
Option ESCAPES Si ESCAPES est active (ON, valeur par dfaut), des
combinaisons impliquant la barre oblique inverse sont utilises pour
identifier, sil y lieu, des caractres spciaux lors dune exportation.
Option FORMAT Les donnes sont au format ASCII ou au format de sortie
BCP.
Option HEXADECIMAL Par dfaut, cette option est active (ON). Les
valeurs de colonne binaire sont crites sous la forme 0xnnnnnn . . ., o
chaque n correspond un chiffre hexadcimal. Il est important de spcifier
HEXADECIMAL ON pour grer des jeux de caractres cods sur plusieurs
octets.
Loption HEXADECIMAL ne peut tre utilise quavec loption FORMAT
ACSII.

680
Chapitre 4. Instructions SQL

Option ORDER Avec ORDER ON (valeur par dfaut), les donnes


exportes sont classes par index clusteris, le cas chant. Sil nexiste pas
dindex clusteris, les donnes exportes sont classes par valeurs de cl
primaire. Si loption est dsactive (OFF), les donnes sont exportes dans le
mme ordre que lorsque vous effectuez une slection dans la table sans avoir
spcifi de clause ORDER BY.
Lexportation est plus lente lorsque loption ORDER est active. En
revanche, le rechargement via linstruction LOAD TABLE est plus rapide en
raison de la simplicit de ltape dindexation.
Pour plus dinformations sur les index clusteriss, reportez-vous la
section Utilisation dindex clusteriss [ASA - Guide de lutilisateur SQL,
page 68].
Option QUOTES Si QUOTES est active (ON, valeur par dfaut), les
chanes exportes sont dlimites par des apostrophes.
Utilisation Linstruction UNLOAD TABLE permet dexporter massivement et avec
efficacit dune table de base de donnes vers un fichier au format ASCII.
Elle est plus efficace que linstruction Interactive SQL OUTPUT et peut tre
appele de nimporte quelle application cliente.
UNLOAD TABLE pose un verrou exclusif sur la table entire.
Lorsque vous dchargez des colonnes avec des donnes de type binaire,
UNLOAD TABLE crit des chanes hexadcimales de la forme \xnnnn, o n
est un chiffre hexadcimal.
Pour plus dinformations sur les options FORMAT, DELIMITED BY et
ESCAPE CHARACTER, reportez-vous la section Instruction LOAD
TABLE la page 563.
Autorisations Les autorisations requises pour excuter une instruction UNLOAD TABLE
dpendent de loption -gl de la ligne de commande du serveur de base de
donnes, comme suit :
Si loption -gl a la valeur ALL, vous devez disposer dautorisations
SELECT sur la ou les table(s) rfrence(s) dans linstruction UNLOAD
TABLE.
Si loption -gl a la valeur DBA, vous devez disposer des droits DBA.
Si loption -gl a la valeur NONE, linstruction LOAD TABLE nest pas
autorise.
Pour plus dinformations, reportez-vous la section Option de serveur
-gl [ASA - Guide dadministration, page 162].
Effets secondaires Aucun.

681
Voir aussi Instruction LOAD TABLE la page 563
Instruction OUTPUT [Interactive SQL] la page 582
Instruction UNLOAD la page 678
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Adaptive Server Enterprise ne prend pas en charge cette
instruction. La mme fonctionnalit est fournie par lutilitaire de
bulkcopy (bcp) dAdaptive Server Enterprise.

682
Chapitre 4. Instructions SQL

Instruction UPDATE
Description Modifier les lignes existantes dans les tables de base de donnes.
Syntaxe 1 UPDATE [ FIRST | TOP n ] liste_tables
SET set_lment, . . .
[ FROM liste_tables ]
[ WHERE condition_recherche ]
[ ORDER BY expression [ ASC | DESC ], . . . ]

Syntaxe 2 UPDATE nom_table


SET set_lment, . . .
VERIFY ( nom_colonne, . . . ) VALUES ( expression, . . . )
[ WHERE condition_recherche ]
[ ORDER BY expression [ ASC | DESC ], . . . ]

Syntaxe 3 UPDATE table


PUBLICATION publication
{ SUBSCRIBE BY expression
| OLD SUBSCRIBE BY expression NEW SUBSCRIBE BY expression
}
WHERE condition_recherche
set-lment :
nom_colonne [.nom_champ. . .] = expression
| nom_colonne[.nom_champ. . .].nom_mthode( [ expression ] )
| @nom_variable = expression

Paramtres Clause UPDATE La table peut tre une table de base de donnes, une table
temporaire ou une vue. Une vue peut tre mise jour, sous rserve que
linstruction SELECT dfinissant la vue contienne une clause GROUP BY
ou une fonction dagrgat, et quelle implique une opration UNION.
Clause FIRST ou TOP Destine initialement tre utilise avec la clause
ORDER BY, cette clause vous permet de ne mettre jour quun certain
sous-ensemble de lignes rpondant la clause WHERE. Il est impossible
dutiliser une variable en entre avec FIRST ou TOP.
Clause SET Si vous mettez des colonnes Java jour, vous pouvez utiliser
nom_champ pour mettre jour la valeur dun champ public dans la colonne.
Une autre solution consiste faire appel une mthode qui dfinit la valeur.
La clause suivante met jour le champ de nom de la colonne JProd laide
dune autre mthode :
SET JProd.setName( Tank Top )

Si vous effectuez la mise jour de colonnes non Java, la clause SET suit le
format suivant :
SET column-name = expression, ...

683
et/ou
SET @variable-name = expression, ...

Chaque colonne nomme prend la valeur de lexpression qui se trouve


droite du signe gal. Lexpression ne contient aucune restriction. Sil sagit
dun nom_colonne (column_name), lancienne valeur est utilise. Lors de
laffectation dune variable, cette dernire doit dj tre dclare et son nom
doit commencer par le signe a commercial (@). Les affectations de variable
et de colonne peuvent tre utilises ensemble ainsi que nimporte quel
numro. Si un nom situ sur le ct gauche de laffectation dans la liste SET
correspond une colonne dans la table mise jour ainsi quau nom de
variable, linstruction mettra jour la colonne.
Lexemple suivant illustre une partie dinstruction UPDATE. Il affecte une
variable en plus de mettre jour la table :
UPDATE T SET @var = expression1, col1 = expression2
WHERE...

Elle est quivalente :


SELECT @var = expression1
FROM T
WHERE... ;
UPDATE T SET col1 = expression2
WHERE...

Clause FROM La clause facultative FROM permet de mettre jour des


tables en fonction de jointures. Si la clause FROM est spcifie, la clause
WHERE en qualifie les lignes. Seules les donnes de la liste de tables de la
clause UPDATE sont mises jour.
Si vous utilisez une clause FROM, il est important de qualifier le nom de
la table mise jour de la mme faon dans les deux parties de linstruction.
Par exemple, si un alias apparat en un endroit, le mme alias doit tre repris
lautre endroit. Sinon, une erreur est gnre.
Cette clause nest admise que si ANSI_UPDATE_CONSTRAINTS est
dsactive (OFF). Pour plus dinformations, reportez-vous la section
Option ANSI_UPDATE_CONSTRAINTS [compatibilit] [ASA - Guide
dadministration, page 692].

Pour une description complte des jointures, reportez-vous la section


Jointures : Recherche de donnes dans plusieurs tables [ASA - Guide de
lutilisateur SQL, page 287].

Pour plus dinformations, reportez-vous la section Clause FROM


la page 511.

684
Chapitre 4. Instructions SQL

Clause WHERE Si elle est dclare, seules les lignes qui rpondent la
condition de recherche sont mises jour. En labsence de clause WHERE,
chaque ligne est mise jour.
Clause ORDER BY Normalement, lordre de mise jour des lignes na pas
dimportance. Toutefois lordre peut tre important, sil est spcifi
conjointement la clause FIRST ou TOP.
La clause ORDER BY naccepte pas les numros de colonnes ordinaux.
Vous ne devez pas mettre jour des colonnes figurant dans la clause
ORDER BY sauf si vous dsactivez loption
ANSI_UPDATE_CONSTRAINTS (OFF). Reportez-vous la section
Option ANSI_UPDATE_CONSTRAINTS [compatibilit] [ASA - Guide
dadministration, page 692].

Distinction des majuscules/ minuscules Les chanes de caractres


insres dans les tables sont toujours enregistres dans la casse utilise pour
les saisir, que la base de donnes fasse ou non la distinction
majuscules/minuscules. Ainsi, une colonne contenant des donnes de type
caractre, mise jour avec une chane Value, est toujours conserve dans la
base avec un V majuscule suivi de minuscules. Les instructions SELECT
renvoient la chane sous la forme Value. En revanche, si la base de donnes
ne fait pas la distinction majuscules/minuscules, Value est identique value,
VALUE, etc., dans toutes les comparaisons. De plus, si une cl primaire
une colonne contient dj lentre Value, linsertion (INSERT) de value est
refuse, car la cl primaire ne serait plus unique.
Mises jour ne modifiant pas une ligne Si la nouvelle valeur ne diffre
pas de lancienne, aucune modification nest apporte aux donnes.
Toutefois, les triggers BEFORE UPDATE se dclenchent chaque mise
jour (UPDATE) dune ligne, que la nouvelle valeur diffre ou non de
lancienne. Les triggers AFTER UPDATE se dclenchent uniquement si la
nouvelle valeur est diffrente de lancienne.
Utilisation La syntaxe 1 de linstruction UPDATE modifie les valeurs des lignes dune
ou plusieurs tables. Les syntaxes 2 et 3 sappliquent uniquement SQL
Remote.
La syntaxe 2, rserve SQL Remote, est destine aux mises jour de
lignes uniques dans des tables uniques excutes par lagent de message. La
clause VERIFY contient un ensemble de valeurs censes tre prsentes dans
la ligne mise jour. Si les valeurs ne correspondent pas, tous les triggers
RESOLVE UPDATE sont dclenchs avant le dbut de la mise jour.
Lchec de la clause VERIFY nentrane pas pour autant celui de

685
linstruction UPDATE.
La syntaxe 3 de linstruction UPDATE permet de mettre en oeuvre une
fonction SQL Remote spcifique et doit tre utilise dans un trigger
BEFORE. Elle fournit la liste complte des valeurs de SUBSCRIBE BY
chaque fois que la liste est modifie. Elle est utilise dans des triggers SQL
Remote afin que le serveur de base de donnes puisse tablir la liste courante
des valeurs de SUBSCRIBE BY. Les deux listes sont enregistres dans le
journal de transactions.
Lagent de message utilise ces deux listes pour vrifier que la ligne est
transfre vers toute base distante ne contenant pas dj cette ligne et en
ayant besoin. Paralllement, lagent de message supprime la ligne de toute
base distante contenant dj cette ligne et qui nen a plus besoin. Une base
de donnes distante qui contient dj la ligne et en a toujours besoin nest
pas concerne par linstruction UPDATE.
Pour les publications cres laide dune sous-requte dans une clause
SUBSCRIBE BY, vous devez crire un trigger contenant la syntaxe 3 de
linstruction UPDATE afin de vous assurer que les lignes sont conserves
dans les souscriptions appropries.
La syntaxe 3 permet de spcifier explicitement les deux listes associes
SUBSCRIBE BY (lancienne et la nouvelle), ce qui peut amliorer
lefficacit des triggers SQL Remote. En labsence de ces listes, le serveur
de bases de donnes tablit lancienne liste de SUBSCRIBE BY partir de
la dfinition de la publication. La nouvelle liste tant gnralement peu
diffrente de lancienne, cette dernire risque dtre tablie deux fois. Vous
pouvez viter ce travail en double en spcifiant les deux listes.
Lexpression SUBSCRIBE BY est soit une valeur soit une sous-requte.
La syntaxe 3 de linstruction UPDATE cre une entre dans le journal de
transactions, mais ne modifie pas la table de la base de donnes.
La mise jour dune quantit importante de donnes laide de linstruction
UPDATE entrane galement la mise jour des statistiques de colonne.
Autorisations Vous devez dtenir lautorisation UPDATE sur les colonnes modifies.
Effets secondaires Les statistiques de colonnes sont mises jour.
Voir aussi Instruction DELETE la page 465
Instruction INSERT la page 551
Clause FROM la page 511
Jointures : Recherche de donnes dans plusieurs tables [ASA - Guide de
lutilisateur SQL, page 287]

Normes et compatibilit

686
Chapitre 4. Instructions SQL

SQL/92 La syntaxe 1 est une fonctionnalit dentre de gamme,


lexception des clauses FROM et ORDER BY qui sont des extensions
diteur. Les syntaxes 2 et 3 sont des extensions diteur nutiliser
quavec SQL Remote.
SQL/99 La syntaxe 1 est une fonctionnalit principale, lexception des
clauses FROM et ORDER BY, qui sont des extensions diteur. Les
syntaxes 2 et 3 sont des extensions diteur nutiliser quavec SQL
Remote.
Pour mettre en oeuvre la compatibilit SQL/92, assurez-vous que loption
ANSI_UPDATE_CONSTRAINTS est dfinie sur STRICT.
Pour plus dinformations, reportez-vous la section Option
ANSI_UPDATE_CONSTRAINTS [compatibilit] [ASA - Guide
dadministration, page 692].

Sybase Selon que les expressions sont compatibles ou non, la syntaxe


de linstruction UPDATE (syntaxe 1) est compatible entre Adaptive
Server Enterprise et Adaptive Server Anywhere. Les syntaxes 2 et 3 ne
sont pas supportes.

Exemple Transfert de lemploy Philip Chin (employ 129) du services des ventes
(sales) vers le service marketing :
UPDATE employee
SET dept_id = 400
WHERE emp_id = 129;

Les commandes commencent actuellement lID 2001. Renumrotez toutes


les commandes existantes, soustrayez 2000 du numro didentification (ID) :
UPDATE sales_order AS orders
SET orders.id = orders.id - 2000
ORDER BY items.id ASC

Cette mise jour nest possible que si la cl trangre de la table


sales_order_items (rfrenant la cl primaire sales_order.id) est dfinie
avec laction ON UPDATE CASCADE. La table sales_order_items est
ensuite galement mise jour.
Pour plus dinformations sur les proprits de cl trangre,
reportez-vous aux sections Instruction ALTER TABLE la page 305 et
Instruction CREATE TABLE la page 425.

687
Instruction UPDATE (positionne) [ESQL] [SP]
Description Modifier les donnes situes la position courante dun curseur.
Syntaxe 1 UPDATE WHERE CURRENT OF nom_curseur
{ USING DESCRIPTOR nom_sqlda | FROM liste_var_hte }

Syntaxe 2 UPDATE liste_tables


SET set_lment,. . .
WHERE CURRENT OF nom_curseur
liste_var_hte : variables indicateurs autoriss

set-lment :
nom_colonne [.nom_champ. . .] = expression
| nom_colonne[.nom_champ. . .].nom_mthode( [ expression ] )

nom_sqlda : identificateur

Paramtres Clause SET Les colonnes rfrences dans set_lment doivent figurer
dans la table sous-jacente mise jour. Elles ne peuvent pas rfrencer des
alias, ni des colonnes dautres tables ou dautres vues. Si un alias est attribu
dans la spcification du curseur la table que vous mettez jour, vous devez
lutiliser dans la clause SET.
Lors de laffectation dune variable, cette dernire doit dj tre dclare et
son nom doit commencer par le signe arobas (@). Les affectations de
variable et de colonne peuvent tre utilises ensemble ainsi que nimporte
quel numro. Si un nom situ sur le ct gauche de laffectation dans la liste
SET correspond une colonne dans la table mise jour ainsi quau nom de
variable, linstruction mettra jour la colonne.
Lexpression droite de la clause SET peut utiliser des constantes, des
variables, des expressions issue de la liste de slection de la requte, ou des
combinaisons de ces lments par lintermdiaire doprateurs tels que +, -,
..., COALESCE, IF, etc. Lexpression ne peut contenir aucune fonction
dagrgat, sous-requte ou sous-slection.
Utilisation Cette forme de linstruction UPDATE permet de mettre jour la ligne
courante du curseur spcifi. La ligne courante est dfinie comme tant la
dernire ligne extraite correctement par le curseur, et la dernire opration
sur le curseur ne doit pas avoir t une instruction positionne DELETE.
Dans la syntaxe 1, chaque colonne de la SQLDA ou chaque valeur de la liste
des variables htes correspond une colonne renvoye par le curseur
spcifi. Si le pointeur sqldata de la SQLDA est le pointeur NULL,
llment de liste de slection correspondant nest pas mis jour.

688
Chapitre 4. Instructions SQL

Dans la syntaxe 2, les colonnes faisant lobjet de la mise jour prennent les
valeurs indiques pour la ligne la ligne courante de la requte spcifie. Il
nest pas ncessaire que les colonnes se trouvent dans la liste de slection du
curseur ouvert spcifi. Ce format peut tre prpar.
Les formats USING DESCRIPTOR, FROM liste_var_hte et var_hte
sappliquent Embedded SQL uniquement.
Autorisations Vous devez dtenir lautorisation UPDATE sur les colonnes concernes par
la mise jour.
Effets secondaires Aucun.
Voir aussi Instruction DELETE la page 465
Instruction DELETE (positionne) [ESQL] [SP] la page 467
Instruction UPDATE la page 683
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme. La srie de curseurs
pouvant tre mis jour peut contenir des extensions propritaire si
loption ANSI_UPDATE_CONSTRAINTS est dfinie sur OFF.
SQL/99 Fonction principale. La srie de curseurs pouvant tre mis
jour peut contenir des extensions propritaire si loption
ANSI_UPDATE_CONSTRAINTS est dfinie sur OFF.

Sybase Lutilisation dEmbedded SQL est supporte par Open


Client/Open Server, et lutilisation des procdures et des triggers par
Adaptive Server Anywhere.
Exemple Lexemple ci-dessous montre une instruction UPDATE avec un curseur
WHERE CURRENT OF.
UPDATE Employee
SET emp_lname = Jones
WHERE CURRENT OF emp_cursor;

689
Instruction UPDATE [SQL Remote]
Description Modifier les donnes dans la base de donnes.
Syntaxe 1 UPDATE liste_tables
SET nom_colonne = expression, . . .
[ VERIFY ( nom_colonne, . . . ) VALUES ( expression, . . . ) ]
[ WHERE condition_recherche ]
[ ORDER BY expression [ ASC | DESC ], . . . ]

Syntaxe 2 UPDATE table


PUBLICATION publication
{ SUBSCRIBE BY expression |
OLD SUBSCRIBE BY expression
NEW SUBSCRIBE BY expression }
WHERE condition_recherche
expression: valeur | sous_requte

Utilisation Les syntaxes 1 et 2 sappliquent uniquement SQL Remote.


Vous devez utiliser la syntaxe 2 sans expression OLD ou NEW SUBSCRIBE
BY dans un trigger BEFORE.
La syntaxe 2 avec OLD et NEW SUBSCRIBE BY peut tre utilise partout.
Linstruction UPDATE permet de modifier les lignes dune ou de plusieurs
tables. Chaque colonne nomme prend la valeur de lexpression qui se
trouve droite du signe gal. Lexpression ne contient aucune restriction.
Mme nom_colonne peut tre utilis dans lexpression : lancienne valeur
est alors prise en compte.
En labsence de clause WHERE, chaque ligne est mise jour. Dans le cas
contraire, seules les lignes qui satisfont la condition de recherche sont
mises jour.
En principe, lordre dans lequel les lignes sont mises jour na pas
dimportance. Cependant, avec la fonction NUMBER(*), un classement peut
tre utile pour ajouter des nombres croissants dans les lignes selon un ordre
donn. En outre, si vous souhaitez, par exemple, ajouter 1 dans les valeurs de
cl primaire dune table, vous devez effectuer cette opration dans lordre
dcroissant par cl primaire, afin dviter les cls primaires en double.
Une vue peut tre mise jour, sous rserve que linstruction SELECT
dfinissant la vue ne contienne pas de clause GROUP BY ou de fonction
dagrgat, ou quelle implique une opration UNION.
Les chanes de caractres insres dans les tables sont toujours enregistres
dans la casse utilise pour les saisir, que la base de donnes fasse ou non la

690
Chapitre 4. Instructions SQL

distinction majuscules/minuscules. Ainsi, une colonne contenant des


donnes de type caractre, mise jour avec une chane Value, est toujours
conserve dans la base avec un V majuscule suivi de minuscules. Les
instructions SELECT renvoient la chane sous la forme Value. En revanche,
si la base de donnes ne fait pas la distinction majuscules/minuscules, Value
est identique value, VALUE, etc., dans toutes les comparaisons. De plus,
si une cl primaire une colonne contient dj lentre Value, linsertion
(INSERT) de value est refuse, car la cl primaire ne serait plus unique.
La clause facultative FROM permet de mettre jour des tables en
fonction de jointures. Si la clause FROM est spcifie, la clause WHERE en
qualifie les lignes. Seules les donnes de la liste de tables suivant
immdiatement le mot-cl UPDATE sont mises jour.
Si vous utilisez une clause FROM, il est important de qualifier le nom de
la table mise jour de la mme faon dans les deux parties de linstruction.
Par exemple, si un alias apparat en un endroit, le mme alias doit tre repris
lautre endroit. Sinon, une erreur est gnre.
La syntaxe 1, rserve SQL Remote, est destine des mises jour de
ligne unique excutes par lagent de message. La clause VERIFY contient
un ensemble de valeurs censes tre prsentes dans la ligne mise jour. Si
les valeurs ne correspondent pas, tous les triggers RESOLVE UPDATE sont
dclenchs avant le dbut de la mise jour. Lchec de la clause VERIFY
nentrane pas pour autant celui de linstruction UPDATE. Lorsque cette
clause est spcifie, une seule table peut tre mise jour la fois.
La syntaxe 2 ne sutilise quavec SQL Remote. Si les expressions OLD et
NEW ne sont pas employes, cette syntaxe doit tre utilise lintrieur
dun trigger BEFORE afin daccder aux valeurs pertinentes. Elle a pour
objet de fournir la liste complte des valeurs de SUBSCRIBE BY chaque
fois que la liste est modifie. Elle est utilise dans des triggers SQL Remote
afin que le serveur de base de donnes puisse tablir la liste courante des
valeurs de SUBSCRIBE BY. Les deux listes sont enregistres dans le journal
de transactions.
Lagent de message utilise ces deux listes pour vrifier que la ligne est
transfre vers toute base distante ne contenant pas dj cette ligne et en
ayant besoin. Paralllement, lagent de message supprime la ligne de toute
base distante contenant dj cette ligne et qui nen a plus besoin. Une base
de donnes distante qui contient dj la ligne et en a toujours besoin nest
pas concerne par linstruction UPDATE.
La syntaxe 2 permet de spcifier explicitement les deux listes associes
SUBSCRIBE BY (lancienne et la nouvelle), ce qui peut amliorer
lefficacit des triggers SQL Remote. En labsence de ces listes, le serveur

691
de bases de donnes tablit lancienne liste de SUBSCRIBE BY partir de
la dfinition de la publication. La nouvelle liste tant gnralement peu
diffrente de lancienne, cette dernire risque dtre tablie deux fois. Vous
pouvez viter ce travail en double en spcifiant les deux listes.
La syntaxe avec OLD et NEW SUBSCRIBE BY est particulirement utile
lorsque plusieurs tables sont mises jour dans le mme trigger, avec des
expressions SUBSCRIBE BY identiques. Cette mthode amliore
considrablement les performances.
Lexpression SUBSCRIBE BY est soit une valeur soit une sous-requte.
La syntaxe 2 de linstruction UPDATE permet de mettre en oeuvre une
fonction SQL Remote spcifique et doit tre utilise dans un trigger
BEFORE.
Pour les publications cres laide dune sous-requte dans une
expression de souscription, vous devez crire un trigger contenant la syntaxe
2 de linstruction UPDATE afin de vous assurer que les lignes sont
conserves dans les souscriptions appropries.
Pour une description complte de cette fonction, reportez-vous la
section Ralignement territorial dans lexemple Contact [SQL Remote -
Guide de lutilisateur, page 112].

La syntaxe 2 de linstruction UPDATE cre une entre dans le journal de


transactions, mais ne modifie pas la table de la base de donnes.
Autorisations Vous devez dtenir lautorisation UPDATE sur les colonnes modifies.
Effets secondaires Aucun.
Voir aussi Instruction CREATE TRIGGER [SQL Remote] la page 443
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Exemples Transfert de lemploy Philip Chin (employ 129) du services des ventes
(sales) vers le service marketing :
UPDATE employee
VERIFY( dept_id ) VALUES( 300 )
SET dept_id = 400
WHERE emp_id = 129

692
Chapitre 4. Instructions SQL

Instruction VALIDATE CHECKSUM


Description Valider une base de donnes en utilisant des checksum.
Syntaxe VALIDATE CHECKSUM

Utilisation Vrifie que les pages de base de donnes nont pas t modifies sur le
disque. Lorsque vous crez un base de donnes avec les checksum activs,
un checksum est calcul pour chaque page de base de donnes juste avant
quelle ne soit crite sur le disque. VALIDATE CHECKSUM lit chaque page
de base de donnes sur le disque et calcule le checksum de chaque page. Si
le checksum calcul pour une page ne correspond pas celui stock pour
cette page, une erreur se produit et des informations sur la page incorrecte
apparaissent dans la fentre de messages du serveur.
Ce type de validation ne peut tre utilis que sur les bases de donnes cres
avec les checksum activs. Vous pouvez vrifier si les checksum sont activs
pour une base de donnes en excutant linstruction suivante :
SELECT db_property ( Checksum )

Autorisations Aucune
Effets secondaires Aucun
Voir aussi Instruction CREATE DATABASE la page 350
Procdure systme sa_validate la page 882
Utilitaire de validation dune base de donnes [ASA - Guide
dadministration, page 658]

693
Instruction VALIDATE INDEX
Description Valider un index, statistiques comprises.
Syntaxe VALIDATE INDEX [ [ propritaire.]nom_table.] { nom_index | nom_table }

Utilisation Vrification que chaque ligne rfrence dans lindex existe effectivement
dans la table. Pour les index de cl trangre, une vrification de validation
garantit en outre que la ligne correspondante existe bien dans la table
primaire. Cette vrification complte le contrle de validit effectu par
linstruction VALIDATE TABLE.
Linstruction VALIDATE INDEX vrifie galement lexactitude des
statistiques rapportes sur les index spcifis. Dans le cas contraire, une
erreur est gnre.
nom_index | nom_table Si vous fournissez le nom dune table
(nom_table ) au lieu dun nom dindex (nom_index ), lindex sur la cl
primaire est valide.
Autorisations Vous devez tre le propritaire de la table dans laquelle a t cr lindex, ou
dtenir les droits DBA ou REMOTE DBA (SQL Remote).
Effets secondaires Aucun.
Voir aussi Instruction CREATE INDEX la page 383
Instruction VALIDATE TABLE la page 695
Utilitaire de validation dune base de donnes [ASA - Guide
dadministration, page 658]

694
Chapitre 4. Instructions SQL

Instruction VALIDATE TABLE


Description Valider une table dans la base de donnes.
Syntaxe VALIDATE TABLE [ propritaire.]nom_table
[ WITH { DATA | EXPRESS | FULL | INDEX } CHECK ]

Paramtres WITH DATA CHECK Si lindex comporte des entres de type LONG
BINARY, LONG VARCHAR, TEXT ou IMAGE, elles risquent de stendre
sur plusieurs pages. En plus des vrifications par dfaut, cette option
demande au serveur de base de donnes de vrifier toutes les pages utilises
par chaque entre.
WITH EXPRESS CHECK En plus des vrifications par dfaut et WITH
DATA, cette option vrifie que le nombre de lignes dans la table correspond
au nombre dentres dans lindex. Elle neffectue pas de recherches
individuelles dans lindex pour chaque ligne. Cette option peut amliorer
considrablement les performances lors de la validation de bases de donnes
volumineuses avec une mmoire cache rduite.
WITH FULL CHECK En plus des vrifications par dfaut, excute un
DATA CHECK et un INDEX CHECK.
WITH INDEX CHECK En plus des vrifications par dfaut, valide chaque
index de la table. Pour plus dinformations sur la validation dindex,
reportez-vous la section Instruction VALIDATE INDEX la page 694.
Utilisation Si aucune option nest spcifie, VALIDATE TABLE balaie toutes les lignes
de la table. Pour chaque entre dindex, cette instruction vrifie la validit de
la page de la base de donnes sur laquelle dmarre lentre, puis vrifie
quune entre pour la ligne existe dans lindex correct. Linstruction
VALIDATE TABLE vrifie galement, pour chaque index de la table, que le
nombre de lignes rfrenc par lindex nest pas suprieur celui de la table.
La validation par dfaut suffit dans la plupart des cas. Des options sont
fournies pour un complment de validation, qui peut parfois se rvler
ncessaire. Suivant le contenu de la base de donnes, ces vrifications
supplmentaires peuvent allonger le temps de validation requis de faon
significative.
Si la table est endommage, une erreur est gnre. Si des erreurs vous sont
signales, vous pouvez supprimer tous les index et toutes les cls de la table,
puis les recrer. Il vous faut alors galement recrer toutes les cls trangres
de cette table. Une autre solution aux erreurs dtectes par linstruction
VALIDATE TABLE consiste dcharger puis recharger lintgralit de la
base de donnes. Utilisez loption -u de DBUNLOAD afin que la table ne
tente pas de faire appel un index qui risque dtre altr pour trier les

695
donnes.
Autorisations Vous devez tre le propritaire de la table, ou dtenir les droits DBA ou
REMOTE DBA (SQL Remote).
Effets secondaires Aucun.
Voir aussi Utilitaire de validation dune base de donnes [ASA - Guide
dadministration, page 658]
Instruction VALIDATE INDEX la page 694
Procdure systme sa_validate la page 882
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.

Sybase Adaptive Server Enterprise ne reconnat pas cette fonction. La


procdure dbcc checktable offre les mmes fonctionnalits.
Option WITH EXPRESS CHECK Cette option nest prise en charge que
par les bases de donnes cres avec Adaptive Server Anywhere version
7.0 ou ultrieure.

696
Chapitre 4. Instructions SQL

Instruction WAITFOR
Description Retarder le traitement de la connexion courante pendant une dure spcifie
ou jusqu une heure donne.
Syntaxe WAITFOR { DELAY heure | TIME heure }
[ CHECK EVERY entier ]
[ AFTER MESSAGE BREAK ]

heure : chane

Paramtres DELAY Si vous utilisez DELAY, le traitement est interrompu pendant


lintervalle dfini.
TIME Si TIME est spcifi, le traitement est interrompu jusqu ce que le
serveur atteigne lheure spcifie.
Si lheure du serveur courant est postrieure lheure spcifie, le traitement
est interrompu jusqu cette heure le jour suivant.
CHECK EVERY Cette clause facultative contrle la frquence dactivation
de linstruction WAITFOR. Par dfaut, elle est active toutes les cinq
secondes. La valeur est en millisecondes avec un minimum de 250
millisecondes.
AFTER MESSAGE BREAK Linstruction WAITFOR peut permettre
dattendre un message dune autre connexion. Dans la plupart des cas, le
message reu est transmis lapplication qui a excut linstruction
WAITFOR tandis que cette dernire continue dattendre. Si la clause
AFTER MESSAGE BREAK est spcifie, linstruction WAITFOR se
termine lorsquun message est reu dune autre connexion. Le texte du
message nest pas transmis lapplication, mais il est possible dy accder
en obtenant la valeur de la proprit de connexion MessageReceived.
Pour plus dinformations sur la proprit MessageReceived,
reportez-vous la section Proprits de niveau connexion [ASA - Guide
dadministration, page 775].

Utilisation Linstruction WAITFOR sactive de faon priodique (toutes les 5 secondes


par dfaut) afin de vrifier si elle a t annule ou si des messages ont t
reus. Si rien ne sest produit, elle continue dattendre.
WAITFOR reprsente une alternative linstruction suivante et peut savrer
utile pour le clients qui ne souhaitent pas obtenir de licence pour Java dans la
base de donnes :
call java.lang.Thread.sleep( <time_to_wait_in_millisecs> )

Dans la plupart des cas, les vnements planifis constituent une meilleure

697
solution par rapport lutilisation de WAITFOR TIME car ces vnements
sexcutent lors de leur propre connexion.
Autorisations Aucune.
Effets secondaires La mise en oeuvre de cette instruction utilise un thread de production
pendant la mise en attente. Elle utilise un des threads spcifis par loption
de base de donnes -gn (la valeur par dfaut est 20 threads).
Voir aussi Instruction CREATE EVENT la page 364
Normes et compatibilit SQL/92 Extension propritaire.

SQL/99 Extension propritaire.


Sybase Cette instruction est galement mise en oeuvre par Adaptive
Server Enterprise.
Exemples Dans lexemple suivant, la mise en attente est de trois secondes :
WAITFOR DELAY 00:00:03

Dans lexemple suivant, la mise en attente est de 0,5 secondes (500


millisecondes) :
WAITFOR DELAY 00:00:00:500

Dans lexemple suivant, la mise en attente dure jusqu 20 heures :


WAITFOR TIME 20:00

Dans lexemple suivant, linstruction WAITFOR de la connexion 1 se


termine lorsquelle reoit le message de la connexion 2 :
// connection 1:

BEGIN
DECLARE msg LONG VARCHAR;
LOOP // forever
WAITFOR DELAY 00:05:00 AFTER MESSAGE BREAK;
SET msg = connection_property(MessageReceived);
IF msg != THEN
MESSAGE Msg: || msg TO CONSOLE;
END IF;
END LOOP
END

// connection 2:

MESSAGE here it is FOR connection 1

698
Chapitre 4. Instructions SQL

Instruction WHENEVER [ESQL]


Description Spcifier la gestion des erreurs dans les programmes Embedded SQL.
Syntaxe WHENEVER { SQLERROR | SQLWARNING | NOTFOUND }
GOTO tiquette | STOP | CONTINUE | { code_C; }

tiquette : identificateur

Utilisation Linstruction WHENEVER permet dintercepter les erreurs, les


avertissements et les conditions exceptionnelles rencontrs par la base de
donnes lors du traitement dinstructions SQL. Linstruction WHENEVER
peut tre insre en un endroit quelconque dun programme Embedded SQL
et ne gnre aucun code. Cest le prprocesseur qui gnre du code aprs
chaque instruction SQL. Laction sur erreur reste active pour toutes les
instructions en Embedded SQL de la ligne source de linstruction
WHENEVER jusqu linstruction WHENEVER suivante contenant la
mme condition derreur, ou jusqu la fin du fichier source.

Erreurs bases sur le positionnement dans le fichier source


Les conditions derreur sont fonction du positionnement dans le fichier
source de langage C et non du moment o linstruction est excute.
Laction par dfaut est CONTINUE.
Notez que cette instruction est fournie pour vous faciliter la tche dans les
programmes simples. La plupart du temps, il est plus facile de contrler les
conditions derreur en vrifiant directement le champ sqlcode de la zone
SQLCA (SQLCODE). Dans ce cas, linstruction WHENEVER est inutile.
En fait, linstruction WHENEVER se contente de demander au
prprocesseur de gnrer un test if ( SQLCODE ) aprs chaque instruction.
Autorisations Aucune.
Effets secondaires Aucun.
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.
SQL/99 Fonction principale.
Sybase Prise en charge par Open Client/Open Server.
Exemple Voici des exemples dinstruction WHENEVER :
EXEC SQL WHENEVER NOTFOUND GOTO done;
EXEC SQL WHENEVER SQLERROR
{
PrintError( &sqlca );
return( FALSE );
};

699
Instruction WHILE [T-SQL]
Description Excution itrative dune instruction ou dune instruction compose.
Syntaxe WHILE instruction_condition_recherche

Utilisation La boucle WHILE conditionnelle affecte les performances dune seule


instruction SQL ou, ventuellement, dune instruction compose dlimite
par les mots-cls BEGIN et END.
BREAK et CONTINUE permettent de contrler lexcution des instructions
formant linstruction compose. BREAK interrompt la boucle ; toutes les
instructions suivant le mot-cl END (fin de la boucle) sont excutes.
CONTINUE relance la boucle WHILE, en omettant toutes les instructions
situes aprs CONTINUE.
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction LOOP la page 574
Normes et compatibilit SQL/92 Extension de Transact-SQL.
SQL/99 Extension de Transact-SQL.

Sybase Prise en charge par Adaptive Server Enterprise.


Exemple Le code ci-dessous illustre lutilisation de linstruction WHILE.
WHILE ( SELECT AVG(unit_price) FROM product ) < $30
BEGIN
UPDATE product
SET unit_price = unit_price + 2
IF ( SELECT MAX(unit_price) FROM product ) > $50
BREAK
END

Linstruction BREAK interrompt la boucle WHILE si le produit le plus cher


cote plus de 50 dollars. Dans le cas contraire, la boucle continue jusqu ce
que le prix moyen dpasse 30 dollars.

700
Chapitre 4. Instructions SQL

Instruction WRITETEXT [T-SQL]


Description Autoriser la mise jour interactive et non journalise dune colonne de type
texte ou image existante.
Syntaxe WRITETEXT nom_table nom_colonne
pointeur_texte [ WITH LOG ] donnes

Utilisation Met jour une valeur texte ou image existante. La mise jour nest pas
consigne dans le journal de transactions, sauf si loption WITH LOG est
spcifie. Vous ne pouvez pas effectuer des oprations WRITETEXT sur des
vues.
Autorisations Aucune.
Effets secondaires WRITETEXT ne dclenche aucun trigger ; par dfaut, les oprations
WRITETEXT ne sont pas consignes dans le journal de transactions.
Voir aussi Instruction READTEXT [T-SQL] la page 600
TEXTPTR (fonction texte et image) la page 242
Normes et compatibilit SQL/92 Extension de Transact-SQL.
SQL/99 Extension de Transact-SQL.

Sybase Prise en charge par Adaptive Server Enterprise.


Exemple Le fragment de code ci-aprs illustre lemploi de WRITETEXT.
Linstruction SELECT de cet exemple renvoie une seule valeur. Le contenu
de la colonne column_name de la ligne spcifie est remplac par la valeur
newdata.
EXEC SQL create variable textpointer binary(16);
EXEC SQL set textpointer =
( SELECT textptr(column_name)
FROM table_name WHERE id = 5 );
EXEC SQL writetext table_name.column_name
textpointer newdata;

701
702
D EUXIME PARTIE

O BJETS SYSTME

Cette partie dcrit les tables, les vues et les procdures systme.
CHAPITRE 5

Tables systme

Prsentation La structure de chaque base de donnes est dcrite dans plusieurs tables
systme.
Les tables systme appartiennent lID utilisateur SYS. Seul le serveur de
base de donnes peut en modifier le contenu. Les commandes UPDATE,
DELETE et INSERT sont inoprantes lorsquelles sont excutes sur ces
tables. En outre, ces tables sont protges contre les commandes ALTER
TABLE et DROP.
Ce chapitre contient des descriptions de chaque table systme. Plusieurs
colonnes nacceptent que deux valeurs possibles. Il sagit gnralement des
valeurs Y pour yes et N pour no. Ces colonnes sont dsignes par (Y/N).
Sommaire Sujet : page

Table systme DUMMY 708

Table systme RowGenerator 709

Table systme SYSARTICLE 710

Table systme SYSARTICLECOL 711


Table systme SYSATTRIBUTE 712

Table systme SYSATTRIBUTENAME 715

Table systme SYSCAPABILITY 716

Table systme SYSCAPABILITYNAME 717


Table systme SYSCHECK 718

Table systme SYSCOLLATION 719

Table systme SYSCOLLATIONMAPPINGS 720

Table systme SYSCOLPERM 721

Table systme SYSCOLSTAT 723


Table systme SYSCOLUMN 725

Table systme SYS CONSTRAINT 727

705
Sujet : page

Table systme SYSDOMAIN 729

Table systme SYSEVENT 730

Table systme SYSEVENTTYPE 732

Table systme SYSEXTENT 733

Table systme SYSEXTERNLOGINS 734

Table systme SYSFILE 735

Table systme SYSFKCOL 736

Table systme SYSFOREIGNKEY 737

Table systme SYSGROUP 739


Table systme SYSHISTORY 740

Table systme SYSINDEX 742

Table systme SYSINFO (dconseille) 744

Table systme SYSIXCOL 746

Table systme SYSJAR 747

Table systme SYSJARCOMPONENT 748

Table systme SYSJAVACLASS 749

Table systme SYSLOGIN 751

Table systme SYSOPTBLOCK 752


Table systme SYSOPTION 753

Table systme SYSOPTJOINSTRATEGY 754

Table systme SYSOPTORDER 755

Table systme SYSOPTQUANTIFIER 756

Table systme SYSOPTREQUEST 757

Table systme SYSOPTREWRITE 758

Table systme SYSOPTSTAT 759

Table systme SYSPROCEDURE 760

Table systme SYSPROCPARM 762


Table systme SYSPROCPERM 764

706
Chapitre 5. Tables systme

Sujet : page

Table systme SYSPUBLICATION 765

Table systme SYSREMOTEOPTION 766

Table systme SYSREMOTEOPTIONTYPE 767

Table systme SYSREMOTETYPE 768

Table systme SYSREMOTEUSER 769

Table systme SYSSCHEDULE 771

Table systme SYSSERVERS 773

Table systme SYSSQLSERVERTYPE 774

Table systme SYSSUBSCRIPTION 775


Table systme SYSSYNC 776

Table systme SYSTABLE 778

Table systme SYSTABLEPERM 781

Table systme SYSTRIGGER 783

Table systme SYSTYPEMAP 786

Table systme SYSUSERMESSAGES 787

Table systme SYSUSERPERM 788

Table systme SYSUSERTYPE 790

Table systme SYSWEBSERVICE 792


Autres tables systmes 794

707
Table systme DUMMY
Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table

dummy_col INTEGER NOT NULL


La table DUMMY, accessible en lecture seule, ne contient quune seule
ligne. Elle peut se rvler utile pour extraire des informations de la base de
donnes. Lexemple suivant permet ainsi dextraire la date et lID utilisateur
courants.
SELECT USER, today(*) FROM SYS.DUMMY

Lutilisation de loption SYS.DUMMY dans la clause FROM est facultative.


Si aucune table nest spcifie dans la clause FROM, SYS.DUMMY est
adopte. Lexemple ci-dessus pourrait se prsenter comme suit :
SELECT USER, today(*)

dummy_col Cette colonne est inutilise. Elle apparat uniquement parce


quil est impossible de crer une table sans colonne.
Le cot de la lecture partir de la table SYS.DUMMY est moins lev qu
partir dune table similaire cre par lutilisateur, parce quaucun loquet
(latch) nest plac sur la page de la table SYS.DUMMY. De plus, la table
SYS.DUMMY ne figure pas dans un noeud Verrou dans le plan graphique et
si elle est la seule table prsente, aucun noeud Verrou nest ajout.

708
Chapitre 5. Tables systme

Table systme RowGenerator


Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table

num_ligne SMALLINT NOT NULL


La table dbo.RowGenerator, accessible en lecture seule, contient 255 lignes.
Elle peut savrer utile pour les requtes qui produisent de petits jeux de
rsultats et ncessitent une plage de valeurs numriques.
La table RowGenerator table est utilise par des procdures stockes et des
vues systme et ne doit tre modifie en aucune faon.
Vous pouvez galement utiliser la procdure stocke sa_rowgenerator pour
crer une plage de valeurs numriques.
Pour plus dinformations, reportez-vous la section Procdure systme
sa_rowgenerator la page 869.
num_ligne Valeur comprise entre 1 et 255.
La requte suivante renvoie un jeu de rsultats contenant une ligne pour
chaque jour du mois en coursh.
select dateadd(day,row_num-1,
ymd(datepart(year,current date),
datepart(month,current date),
1)) as day_of_month
from dbo.RowGenerator
where row_num < 32
and datepart(month,day_of_month) =
datepart(month,current date)
order by row_num

709
Table systme SYSARTICLE
Nom de colonne Type de co- Contrainte Contraintes de table
lonne de colonne

publication_id UNSI- NOT NULL Cl primaire. La cl


GNED INT trangre fait rfrence
SYSPUBLICATION.

table_id UNSI- NOT NULL Cl primaire. La cl


GNED INT trangre fait rfrence
SYSTABLE.
expression_where LONG VAR-
CHAR
expression_- LONG VAR-
souscrire_par CHAR

query CHAR(1) NOT NULL


Chaque ligne de la table SYSARTICLE dcrit un article appartenant une
publication.
publication_id Publication laquelle cet article appartient.
table_id Chaque article est constitu de colonnes et de lignes issues dune
table unique. La prsente colonne contient lID de cette table.
expression_where Dans le cas darticles comportant un sous-ensemble de
lignes dfini par une clause WHERE, cette colonne indique la condition de
recherche.
subscribe_by_expr Dans le cas darticles comportant un sous-ensemble
de lignes dfini par une expression SUBSCRIBE BY, cette colonne contient
lexpression concerne.
query Indique des informations sur le type darticle lintention du
serveur de base de donnes.

710
Chapitre 5. Tables systme

Table systme SYSARTICLECOL


Nom de colonne Type de co- Contrainte Contraintes de table
lonne de colonne

publication_id UNSI- NOT NULL Cl primaire. La cl


GNED INT trangre fait rfrence
SYSARTICLE.

table_id UNSI- NOT NULL Cl primaire. La cl


GNED INT trangre fait rfrence
SYSARTICLE, SYSCO-
LUMN.

column_id UNSI- NOT NULL Cl primaire. La cl


GNED INT trangre fait rfrence
SYSCOLUMN.
Chaque ligne identifie une colonne dun article.
publication_id Identificateur unique de la publication laquelle la colonne
appartient.
table_id Table laquelle la colonne appartient.
Identificateur de colonne, issu de la table systme
column_id
SYSCOLUMN.

711
Table systme SYSATTRIBUTE
SYSATTRIBUTE et SYSATTRIBUTENAME ont t cres afin de pouvoir
ajouter de nouvelles informations sur les objets de base de donnes dans les
tables systme sans modifier le schma.
Chaque ligne de SYSATTRIBUTE dcrit un objet systme, tel quune table
ou un index spcifique. Les lignes sont ajoutes lorsque lattribut est
spcifi ; par exemple, chaque table ayant un pourcentage despace libre
dans chacune de ses pages est ajoute dans SYSATTRIBUTE. De mme,
une ligne rserve la profondeur dindex napparat dans
SYSATTRIBUTE que lorsque cette profondeur slve 2.
Des statistiques sont tenues pour tous les index, y compris ceux des tables de
catalogue, la mise jour de chaque index. Linstruction VALIDATE vrifie
que les statistiques concernant les index spcifis sont exactes et gnre une
erreur dans le cas contraire. Ainsi, loptimiseur dispose de statistiques
fiables pour un cot virtuellement nul en termes de performances. Les
statistiques sont conserves dans SYSATTRIBUTE sous la forme dune
ligne par statistique relative un index.

object_type object_id attribute_id sub_- sub_- attribute_-


(from SY- object_id1 object_id2 value
SATTRIBU-
TENAME

Pourcentage T table_id NULL NULL pourcentage


despace despace
libre dans libre laiss
chaque page dans chaque
de table page de table

Index cluste- T table_id 2 index_- NULL NULL


ris number

Nombre de I table_id 3 NULL NULL nombre de


valeurs cl valeurs cl
distinctes distinctes

Nombre de I table_id 4 index_- NULL nombre de


pages de ni- number pages de ni-
veau feuille veau feuille

Profondeur I table_id 5 index_- NULL profondeur


dindex number dindex

712
Chapitre 5. Tables systme

object_type object_id attribute_id sub_- sub_- attribute_-


(from SY- object_id1 object_id2 value
SATTRIBU-
TENAME

Distance I table_id 6 index_- NULL distance


maximale number maximale, en
entre valeurs pages, entre
de cl din- les lignes
dex contenant la
mme valeur
de cl

Les colonnes de la table SYSATTRIBUTE prsentent les caractristiques


suivantes :

Nom de colonne Type de colonne Contrainte de co-


lonne

object_type CHAR(1) NOT NULL

object_id UNSIGNED INT NOT NULL

attribute_id UNSIGNED INT NOT NULL La cl


trangre fait rf-
rence SYSATTRI-
BUTENAME.

sub_object_id1 UNSIGNED INT

sub_object_id2 UNSIGNED INT

attribute_value LONG VARCHAR


object_type Type dobjet que lattribut dcrit. Par exemple, T reprsente
une table, I un index.
object_id ID de lobjet donn. Des informations sur lID dobjet peuvent
tre obtenues partir de la colonne table_id aprs lexcution de
linstruction SELECT * FROM SYSTABLE.
attribute_id Nombre reprsentant lattribut dcrit. Un nom descriptif de
chaque ID dattribut est stock dans SYSATTRIBUTENAME.
sub_object_id1 Informations supplmentaires sur lattribut, ou NULL sil
ny en a pas.
sub_object_id2 Informations supplmentaires sur lattribut, ou NULL sil
ny en a pas.

713
attribute_value Valeur de lattribut.

714
Chapitre 5. Tables systme

Table systme SYSATTRIBUTENAME


Nom de colonne Type de colonne Contrainte de co-
lonne

attribute_id UNSIGNED INT NOT NULL

attribute_name CHAR(128) NOT NULL


Cette table fournit des noms dattribut pour les ID dattribut utiliss dans
SYSATTRIBUTE.
attribute_id ID de lattribut.
attribute_name Nom de lattribut.

715
Table systme SYSCAPABILITY
Nom de colonne Type de co- Contrainte Contraintes de table
lonne de colonne

capid INTEGER NOT NULL Cl primaire. La cl


trangre fait rfrence
SYSCAPABILITY-
NAME.
srvid INTEGER NOT NULL Cl primaire. La cl
trangre fait rfrence
SYSSERVERS.

capvalue CHAR(128) NOT NULL


Chaque ligne identifie une fonctionnalit dun serveur distant.
capid ID de fonctionnalit.
srvid Serveur auquel sapplique la fonctionnalit, tel quil est rpertori
dans SYSSERVERS.
capvalue Valeur de la fonctionnalit.

716
Chapitre 5. Tables systme

Table systme SYSCAPABILITYNAME


Nom de colonne Type de co- Contrainte Contraintes de table
lonne de colonne

capid INTEGER NOT NULL Cl primaire.

capname CHAR(128) NOT NULL


Chaque ligne identifie une fonctionnalit.
capidFonctionnalit, telle quelle est rpertorie dans la table
SYSCAPABILITYNAME.
capname Nom de la fonctionnalit.

717
Table systme SYSCHECK
Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table

check_id INTEGER NOT NULL Cl primaire. La


cl trangre fait
rfrence SYS-
CONSTRAINT.
check_defn LONG VAR- NOT NULL
CHAR
Chaque ligne identifie une contrainte de vrification nomme dans une table.
check_id Identificateur de la contrainte.
check_defn Lexpression CHECK.

718
Chapitre 5. Tables systme

Table systme SYSCOLLATION


Nom de colonne Type de colonne Contrainte de Contrainte de
colonne table

collation_id SMALLINT NOT NULL Cl primaire.

collation_label CHAR(10) NOT NULL

collation_name CHAR(128) NOT NULL


collation_order BINARY(1280) NOT NULL
Cette table contient les informations de squence de classement de la base de
donnes. Son contenu nest pas modifiable.
collation_id Numro unique identifiant la squence de classement.
collation_label Chane identifiant la squence de classement. Pour
slectionner la squence de classement lors de la cration de la base de
donnes, spcifiez-le par le biais de loption -z.
collation_name Nom de la squence de classement.
collation_order Tableau doctets dfinissant la manire dont les 256 codes
de caractre sont traits lors dune comparaison de chanes. Avant de
procder la comparaison, ce processus convertit chaque caractre en
fonction des ordres de classement indiqus dans cette table. En ce qui
concerne les diffrentes pages de code ASCII, la seule diffrence se situe au
niveau des caractres accentus. En gnral, un caractre accentu est class
de la mme manire que sa version non accentue.

719
Table systme SYSCOLLATIONMAPPINGS
Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table

collation_label CHAR(10) NOT NULL Cl primaire.

collation_name CHAR(128) NOT NULL

cs_label CHAR(128)
so_case_label CHAR(128)

so_caseless_label CHAR(128)

jdk_label CHAR(128)
collation_label Chane identifiant la squence de classement. Pour
slectionner la squence de classement lors de la cration de la base de
donnes, spcifiez-le par le biais de loption -z.
collation_name Nom du classement utilis pour dcrire le codage du jeu
de caractres.
cs_label Libell de mappage du jeu de caractres Adaptive Server
Enterprise.
so_case_label Ordre de tri de classement du mappage de jeu de caractres
Adaptive Server Enterprise avec distinction majuscules/minuscules.
so_caseless_label Ordre de tri de classement du mappage de jeu de
caractres Adaptive Server Enterprise sans distinction
majuscules/minuscules.
jdk_label Libell du jeu de caractres JDK.
Cette table ne contient quune seule ligne avec le mappage du classement de
la base de donnes.

720
Chapitre 5. Tables systme

Table systme SYSCOLPERM


Nom de colonne Type de colonne Contrainte Contrainte de table
de colonne

table_id UNSIGNED INT NOT NULL Cl primaire. La cl


trangre fait r-
frence SYSCO-
LUMN.
grantee UNSIGNED INT NOT NULL Cl primaire. La cl
trangre fait rf-
rence SYSUSER-
PERM.

grantor UNSIGNED INT NOT NULL Cl primaire. La cl


trangre fait rf-
rence SYSUSER-
PERM.

column_id UNSIGNED INT NOT NULL Cl primaire. La cl


trangre fait r-
frence SYSCO-
LUMN.
privilege_type SMALLINT NOT NULL Cl primaire.

is_grantable CHAR(1) NOT NULL


Linstruction GRANT permet doctroyer une autorisation UPDATE,
SELECT ou REFERENCES sur chaque colonne dune table. Chaque
colonne faisant lobjet dune autorisation UPDATE, SELECT ou
REFERENCES est enregistre dans une ligne de la table SYSCOLPERM.
table_id Numro de la table contenant la colonne.
grantee Numro associ lID utilisateur bnficiaire de lautorisation sur
la colonne. Si la colonne grantee contient le numro correspondant lID
utilisateur PUBLIC spcial, lautorisation est octroye tous les ID
utilisateur.
grantor Numro de lID utilisateur octroyant lautorisation.
column_id Associ au numro de table table_id, ce numro de colonne
identifie la colonne faisant lobjet de lautorisation.
privilege_type Numro indiquant quel type dautorisation a t octroy
sur la colonne (16=REFERENCES, 1=SELECT ou 8=UPDATE).

721
is_grantable (Y/N) Caractre indiquant si lautorisation WITH GRANT
OPTION a t octroye sur la colonne.

722
Chapitre 5. Tables systme

Table systme SYSCOLSTAT

Nom de co- Type de co- Contrainte Contraintes de table


lonne lonne de colonne

table_id UNSI- NOT NULL Cl primaire. La cl tran-


GNED INT gre fait rfrence SYS-
COLUMN.

column_id UNSI- NOT NULL Cl primaire. La cl tran-


GNED INT gre fait rfrence SYS-
COLUMN.
format_id SMALLINT NOT NULL

update_time TIMESTAMP NOT NULL

density FLOAT NOT NULL

max_steps SMALLINT NOT NULL


actual_steps SMALLINT NOT NULL

step_values LONG BINARY

frequencies LONG BINARY

Cette table contient les statistiques relatives aux colonnes, stockes sous
forme dhistogrammes et utilises par loptimiseur. Il est prfrable
dextraire le contenu de cette table au moyen de la procdure stocke
sa_get_histogram ou de lutilitaire dhistogramme.
table_id Numro identifiant de faon unique la table ou la vue laquelle
cette colonne appartient.
column_id Avec table_id, numro identifiant la colonne de faon unique.
format_id Champ interne permettant de dterminer le format du reste de la
ligne.
update_time Heure de la dernire mise jour de cette ligne.
density Estimation de la slectivit moyenne pondre dune valeur
unique de la colonne, ne tenant pas compte de la slectivit des valeurs
uniques leves stockes dans la ligne.
max_steps Nombre maximal de pas autoriss dans lhistogramme.
actual_steps Nombre de pas rellement utiliss.

723
step_values Valeurs limites des pas de lhistogramme.
frequencies Slectivit des pas de lhistogramme.

724
Chapitre 5. Tables systme

Table systme SYSCOLUMN

Nom de co- Type de co- Contrainte Contraintes de table


lonne lonne de colonne

table_id UNSI- NOT NULL Cl primaire. La cl tran-


GNED INT gre fait rfrence SYS-
TABLE.

column_id UNSI- NOT NULL Cl primaire.


GNED INT

pkey CHAR(1) NOT NULL

domain_id SMALLINT NOT NULL La cl trangre fait rf-


rence SYSDOMAIN.

nulls CHAR(1) NOT NULL

width SMALLINT NOT NULL


scale SMALLINT NOT NULL

unused INTEGER NOT NULL

max_identity BIGINT NOT NULL

column_- CHAR(128) NOT NULL


name

remarks LONG VAR-


CHAR

default LONG VAR-


CHAR

unused2 LONG VAR-


CHAR

user_type SMALLINT La cl trangre fait rf-


rence SYSUSERTYPE.

format_str CHAR(128)

column_type CHAR(1) NOT NULL

remote_name VAR-
CHAR(128)

remote_type UNSI-
GNED INT

725
Chaque colonne de chaque table ou de chaque vue est dcrite par une ligne
de la table SYSCOLUMN.
table_id Numro identifiant de faon unique la table ou la vue laquelle
cette colonne appartient.
column_id Pour chaque table, la numrotation des colonnes commence
1. Lordre des numros de colonne dtermine lordre dapparition de ces
colonnes dans la commande :
SELECT * FROM TABLE

pkey (Y/N) Indique si cette colonne fait partie de la cl primaire de la table.


domain_id Type de donnes de la colonne, indiqu par un numro de type
de donnes enregistr dans la table SYSDOMAIN.
nulls (Y/N) Indique si la valeur NULL est admise dans cette colonne.
width Longueur dune colonne de type chane, prcision des colonnes
numriques ou nombre doctets de stockage pour tout autre type de donnes.
scale Nombre de chiffres aprs le signe dcimal pour les paramtres
numriques et zro (0) pour tout autre type de donnes.
unused Non utilis.
Valeur la plus leve de la colonne, sil sagit dune colonne
max_identity
AUTOINCREMENT, IDENTITY ou GLOBAL AUTOINCREMENT.
column_name Nom de la colonne.
remarks Chane de commentaire.
default Valeur par dfaut de la colonne. Uniquement utilise lorsque
aucune valeur pour la colonne nest spcifie dans linstruction INSERT.
unused2 Non utilis.
user_type Contient le type de donnes de la colonne si celui-ci est dfini
par lutilisateur.
format_str Non utilis actuellement.
column_type Type de la colonne. Contient C pour une colonne calcule et
R pour les autres colonnes.
remote_name Dans les tables Proxy, nom de la colonne distante.
remote_type Dans les tables Proxy, type de la colonne distante. Cette
valeur est dfinie par linterface ou le serveur distant.

726
Chapitre 5. Tables systme

Table systme SYS CONSTRAINT


Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table

constraint_id INTEGER NOT NULL Cl primaire.

table_id INTEGER NOT NULL La cl trangre


fait rfrence
SYSTABLE,
SYSCOLUMN et
SYSINDEX.
column_id INTEGER La cl trangre
fait rfrence
SYSCOLUMN.

index_id INTEGER La cl trangre


fait rfrence
SYSINDEX.

fkey_id SMALLINT La cl trangre


fait rfrence
SYSFOREIGN-
KEY.

constraint_type CHAR(1) NOT NULL

constraint_name CHAR(128) NOT NULL


Chaque ligne dcrit une contrainte nomme. Cette table ne contient pas de
ligne pour les tables de catalogue.
constraint_id ID de contrainte unique.
table_id LID de la table laquelle sapplique la contrainte.
column_id LID de la colonne laquelle sapplique la contrainte. Cette
colonne est de type NULL pour les contraintes autres que des contraintes de
colonne.
index_idLID dindex dune contrainte unique. Cette colonne est de type
NULL pour toutes les contraintes qui ne sont pas uniques.
fkey_id LID de cl trangre dune contrainte de cl trangre. Cette
colonne est de type NULL pour toutes les contraintes qui ne sont pas des
contraintes de cl trangre.
constraint_type Dfinie avec lune des valeurs suivantes :

727
C sil sagit dune contrainte de vrification de colonne.
T sil sagit dune contrainte de table.

P si la contrainte est une cl primaire.

F si la contrainte est une cl trangre.


U sil sagit dune contrainte unique.
constraint_name Nom de la contrainte.

728
Chapitre 5. Tables systme

Table systme SYSDOMAIN


Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table

domain_id SMALLINT NOT NULL Cl primaire.

domain_name CHAR(128) NOT NULL

type_id SMALLINT NOT NULL


prcision SMALLINT
Un numro unique est affect chaque type de donnes prdfini (parfois
appel domaine). La table SYSDOMAIN, fournie titre dinformation,
indique le lien entre ces numros et les types de donnes correspondants.
Cette table nest jamais modifie.
domain_id Numro unique affect chaque type de donnes. Ces numros
sont attribus une fois pour toutes.
domain_name Chane contenant le type de donnes normalement utilis
avec la commande CREATE TABLE. Par exemple, char ou integer.
type_id Type de donnes ODBC. Cette colonne correspond data_type
de la table dbo.SYSTYPES fournie pour la compatibilit avec Transact-SQL.
prcision Nombre de chiffres significatifs qui peuvent tre enregistrs au
moyen de ce type de donnes. Dans le cas de types de donnes non
numriques, la colonne contient la valeur NULL.

729
Table systme SYSEVENT

Nom de colonne Type de colonne Contrainte Contraintes de


de colonne table

event_id INTEGER NOT NULL Cl primaire.

creator UNSIGNED INT NOT NULL La cl trangre


fait rfrence
SYSUSER-
PERM.

event_name VARCHAR(128) NOT NULL La cl trangre


fait rfrence
SYSEVENT-
TYPE.

enabled CHAR(1) NOT NULL

location CHAR(1) NOT NULL

event_type_id INTEGER

action LONG VARCHAR

external_action LONG VARCHAR


condition LONG VARCHAR

remarks LONG VARCHAR

source LONG VARCHAR

Chaque ligne de la table SYSEVENT dcrit un vnement cr au moyen de


linstruction CREATE EVENT.
event_id Numro unique affect chaque vnement.
creator Numro dutilisateur du propritaire de lvnement. Le nom de
lutilisateur peut tre obtenu par consultation de la table SYSUSERPERM.
event_name Nom de lvnement.
enabled (Y/N) Indique si le dclenchement de lvnement est autoris.
location Emplacement o lvnement doit tre dclench :
C (consolidated) = consolid
R (remote) = distant

730
Chapitre 5. Tables systme

A (all) = tous
event_type_idPour les vnements systme, type dvnement rpertori
dans SYSEVENTTYPE.
action Dfinition de la routine de gestion dvnement.
external_action Non utilis.
condition Condition WHERE permettant de contrler le dclenchement de
la routine de gestion dvnement.
remarks Chane de commentaire.
source Cette colonne contient la source de la routine de gestion
dvnement si loption preserve_source_format est active (ON). Elle
permet de prserver lapparence du texte dorigine. Pour plus
dinformations, reportez-vous la section Option
PRESERVE_SOURCE_FORMAT [base de donnes] [ASA - Guide
dadministration, page 744].

731
Table systme SYSEVENTTYPE
Nom de colonne Type de colonne Contrainte Contraintes de
de colonne table

event_type_id INTEGER NOT NULL Cl primaire.

name VARCHAR(128) NOT NULL

description LONG VARCHAR


Cette table rpertorie les types dvnement systme pouvant tre rfrencs
par linstruction CREATE EVENT.
event_type_id Numro unique affect chaque type dvnement.
name Nom du type dvnement systme.
description Description du type dvnement systme.

732
Chapitre 5. Tables systme

Table systme SYSEXTENT


Nom de co- Type de colonne Contrainte de Contrainte de
lonne colonne table

file_id SMALLINT NOT NULL Cl primaire.


La cl trangre
fait rfrence
SYSFILE.
extent_id SMALLINT NOT NULL Cl primaire.

first_page INTEGER NOT NULL

last_page INTEGER NOT NULL

file_name LONG VARCHAR NOT NULL


Cette table nest pas utilise.

733
Table systme SYSEXTERNLOGINS
Nom de colonne Type de colonne Contrainte Contraintes de
de colonne table

user_id UNSIGNED INT NOT NULL Cl primaire.


Cl trangre
pour SYSUSER-
PERM.
srvid INTEGER NOT NULL Cl primaire. Cl
trangre pour
SYSSERVERS.

remote_login VARCHAR(128)
remote_password VARBINARY(128)
Chaque ligne dcrit un login externe pour un accs aux donnes distantes.
user_id ID utilisateur de la base de donnes locale.
srvid Serveur distant, tel quil est rpertori dans la table SYSSERVERS.
remote_login Nom de login de lutilisateur, pour le serveur distant.
remote_password Mot de passe de lutilisateur, pour le serveur distant.

734
Chapitre 5. Tables systme

Table systme SYSFILE


Nom de co- Type de colonne Contrainte de Contrainte de
lonne colonne table

file_id SMALLINT NOT NULL Cl primaire.

file_name LONG VARCHAR NOT NULL Index unique.

dbspace_name CHAR(128) NOT NULL


store_type CHAR(8) NOT NULL
Chaque base de donnes se compose dun ou de plusieurs dbspaces. Chaque
dbspace correspond un fichier du systme dexploitation et est enregistr
dans SYSFILE.
file_id Numro unique affect chaque fichier de base de donnes. Cet
identificateur de fichier est la cl primaire de la table SYSFILE. Toutes les
tables systme sont stockes dans file_id 0.
file_name Nom de fichier du dbspace. Pour le dbspace SYSTEM, la valeur
correspond au nom du fichier de base de donnes lors de la cration de la
base de donnes. Cette valeur nest fournie qu titre dinformation et ne
peut pas tre modifie. Pour les autres dbspaces, le nom de fichier peut tre
modifi au moyen de linstruction suivante :
ALTER DBSPACE dbspace RENAME new-file-name

dbspace_name Chaque fichier possde un nom dbspace unique. Ce nom


est utilis dans la commande CREATE TABLE.
store_type Champ usage interne.

735
Table systme SYSFKCOL
Nom de colonne Type de Contrainte Contraintes de table
colonne de colonne

foreign_table_id UNSI- NOT NULL Cl primaire. La cl


GNED INT trangre fait rfrence
SYSCOLUMN et SYS-
FOREIGNKEY.
foreign_key_id SMALLINT NOT NULL Cl primaire. La cl
trangre fait rfrence
SYSFOREIGNKEY.

foreign_column_id UNSI- NOT NULL Cl primaire. La cl


GNED INT trangre fait rfrence
SYSCOLUMN.

primary_column_- UNSI- NOT NULL


id GNED INT
Chaque ligne de SYSFKCOL dcrit une association entre une colonne
trangre de la table trangre dune relation et la colonne primaire de la
table primaire.
foreign_table_id Numro de la table trangre.
foreign_key_id Numro de la cl trangre (FOREIGN KEY) de la table
trangre. Associs, foreign_table_id et foreign_key_id identifient de faon
unique une ligne dans la table SYSFOREIGNKEY. Cette ligne fournit le
numro de la table primaire ( laide de la table SYSFOREIGNKEY).
foreign_column_id Associ foreign_table_id, ce numro de colonne
identifie la colonne trangre dans SYSCOLUMN.
Associ primary_table_id (obtenu partir de
primary_column_id
SYSFOREIGNKEY), ce numro de colonne identifie la colonne primaire
dans SYSCOLUMN.

736
Chapitre 5. Tables systme

Table systme SYSFOREIGNKEY

Nom de colonne Type de colonne Contrainte Contraintes de table


de colonne

foreign_table_id UNSIGNED INT NOT NULL Cl primaire.


La cl trangre
fait rfrence
SYSTABLE.table_-
id. Index unique.

foreign_key_id SMALLINT NOT NULL Cl primaire.


primary_table_id UNSIGNED INT NOT NULL La cl trangre
fait rfrence
SYSTABLE.table_-
id.

root INTEGER NOT NULL


check_on_- CHAR(1) NOT NULL
commit
nulls CHAR(1) NOT NULL

role CHAR(128) NOT NULL Index unique.

remarks LONG VAR-


CHAR

primary_index_id UNSIGNED INT NOT NULL

fk_not_enforced CHAR(1) NOT NULL

hash_limit SMALLINT NOT NULL

Une cl trangre est une relation entre deux tables : la table trangre et la
table primaire. Chaque cl trangre est dfinie par une ligne de
SYSFOREIGNKEY et par une ou plusieurs lignes de SYSFKCOL.
SYSFOREIGNKEY contient des informations dordre gnral sur la cl
trangre tandis que SYSFKCOL identifie les colonnes de la cl trangre et
associe chacune delles une colonne de la cl primaire de la table primaire.
foreign_table_id Numro de la table trangre.
foreign_key_id Chaque cl trangre possde un numro de cl trangre
qui doit tre diffrent des numros suivants :
numros des autres cls trangres correspondant la table trangre,

737
numros des cls trangres correspondant la table primaire,
numros des index dfinis sur la table trangre.

primary_table_id Numro de la table primaire.


root La colonne root dsigne lemplacement de la page racine de la cl
trangre dans le fichier de base de donnes.
check_on_commit (Y/N) Indique si les instructions INSERT et UPDATE
doivent attendre le COMMIT suivant pour vrifier la validit des cls
trangres. Une cl trangre est correcte lorsque, pour chaque ligne de la
table trangre, les colonnes de la cl trangre contiennent soit la valeur
NULL, soit des valeurs correspondant celles de la cl primaire dune ligne
de la table primaire.
nulls (Y/N) Indique si les colonnes de la cl trangre peuvent contenir la
valeur NULL. Notez que ce paramtre se distingue des valeurs NULL des
colonnes de la cl trangre.
role Nom de la relation entre la table trangre et la table primaire. Sauf
indication contraire, le nom de rle (role) doit correspondre au nom de la
table primaire. La table trangre ne peut pas possder deux cls trangres
associes au mme nom de rle.
remarks Chane de commentaire.
primary_index_id index_id de la cl primaire.
fk_not_enforced (Y/N) N indique que lune des tables est distante.
hash_limit Contient des informations sur la reprsentation physique de
lindex.

738
Chapitre 5. Tables systme

Table systme SYSGROUP


Nom de co- Type de colonne Contrainte Contraintes de table
lonne de colonne

group_id UNSIGNED INT NOT NULL Cl primaire. La cl


trangre fait rfrence
SYSUSERPERM.user_-
id.
group_member UNSIGNED INT NOT NULL Cl primaire. La cl
trangre fait rfrence
SYSUSERPERM.user_-
id.
SYSGROUP contient une ligne pour chaque membre de chaque groupe.
Cette table dcrit une relation de type n-n entre les groupes et les membres.
Un groupe peut comporter plusieurs membres et un utilisateur peut tre
membre de plusieurs groupes.
group_id Numro dutilisateur du groupe.
group_member Numro dutilisateur dun membre.

739
Table systme SYSHISTORY
Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table

operation CHAR(12) NOT NULL Cl primaire.

version CHAR(15) NOT NULL Cl primaire.

platform CHAR(50) NOT NULL Cl primaire.


first_time TIMESTAMP NOT NULL

last_time TIMESTAMP NOT NULL

details VAR-
CHAR(2048)
Une ligne est ajoute dans la table SYSHISTORY chaque dmarrage de la
base de donnes avec une version diffrente du logiciel et/ou sur une
plate-forme diffrente. Chaque combinaison version du logiciel/plate-forme
est indique une seule fois dans la table.
operation Type dopration ralis sur le fichier de base de donnes. Les
valeurs suivantes sont disponibles :
INIT Informations temporelles sur la cration de la base de donnes.
UPGRADE Informations temporelles sur la mise niveau de la base de
donnes.
START Informations temporelles sur le dmarrage de la base de
donnes laide dune version spcifique du serveur de base de donnes
sur un systme dexploitation particulier.
LAST_START Informations sur lheure du dernier dmarrage du
serveur de base de donnes.
Une opration LAST_START est convertie en opration START lorsque
la base de donnes est dmarre avec une version diffrente du serveur de
base de donnes et/ou sur un systme dexploitation diffrent par rapport
aux valeurs actuelles de la ligne LAST_START.
version Numro de version et de build du serveur de base de donnes
utilis pour excuter lopration.
platform Systme dexploitation sur lequel lopration a t excute.
first_time Date et heure auxquelles la base de donnes a t dmarre pour
la premire fois sur un systme dexploitation particulier avec une version
spcifique du logiciel.

740
Chapitre 5. Tables systme

last_time Dernires date et heure auxquelles la base de donnes a t


dmarre sur un systme dexplotation particulier avec une version
spcifique du logiciel.
details Cette colonne stocke des informations comme les options de lignes
de commande utilises pour dmarrer le serveur de base de donnes ou les
bits de fonctionnalit activs pour la base de donnes. Ces informations sont
utilises des fins de support technique.

741
Table systme SYSINDEX

Nom de co- Type de colonne Contrainte Contraintes de table


lonne de colonne

table_id UNSIGNED INT NOT NULL Cl primaire, index


unique. La cl tran-
gre fait rfrence SYS-
TABLE.
index_id UNSIGNED INT NOT NULL Cl primaire.

root INTEGER NOT NULL

file_id SMALLINT NOT NULL

unique CHAR(1) NOT NULL

creator UNSIGNED INT NOT NULL La cl trangre


fait rfrence
SYSUSERPERM.user_-
id.

index_name CHAR(128) NOT NULL Index unique.

hash_limit SMALLINT NOT NULL


index_owner CHAR(4) NOT NULL

index_type CHAR(4) NOT NULL

remarks LONG, VAR-


CHAR

Chaque index de la base de donnes est dcrit par une ligne de SYSINDEX.
Chaque colonne dun index est dcrite par une ligne de SYSIXCOL.
table_id Identifie la table laquelle lindex sapplique.
index_id Numro unique affect chaque index dune table donne.
root La colonne root dsigne lemplacement de la page racine de lindex
dans le fichier de base de donnes.
file_id Lindex est entirement contenu dans le fichier possdant ce file_id
(voir SYSIXCOL).
unique Indique si lindex est unique (Y), non unique (N) ou si une
contrainte dunicit (U) lui a t affecte. Un index unique permet dviter

742
Chapitre 5. Tables systme

que deux lignes de la table indexe possdent les mmes valeurs dans les
colonnes de lindex.
creator Numro dutilisateur du crateur de lindex. Cet utilisateur est
toujours le crateur de la table identifie par lidentificateur table_id.
index_name Nom de lindex. Une table ne peut pas possder deux index
de mme nom.
index_owner Propritaire de lindex. Ce champ est toujours USER.
index_type Type de lindex. Ce champ contient toujours SA.
remarks Chane de commentaire.

743
Table systme SYSINFO (dconseille)
Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table

page_size INTEGER NOT NULL

encryption CHAR(1) NOT NULL

blank_padding CHAR(1) NOT NULL


case_sensitivity CHAR(1) NOT NULL

default_collation CHAR(10)

database_version SMALLINT NOT NULL

classes_version CHAR(10)
Cette table contient les caractristiques de la base de donnes, telles quelles
ont t dfinies lors de la cration de cette base. Elle ne contient quune
seule ligne.

Remarque
Lutilisation de cette table est dconseille. Il est prfrable dutiliser
la fonction db_property. Les valeurs de paramtres suivantes pour db_-
property peuvent tre utilises pour obtenir les informations dans SYSINFO
:

PageSize
Encryption

BlankPadding
CaseSensitive
Collation

FileVersion
JDKVersion
Pour plus dinformations sur la fonction db_property , reportez-vous
la section DB_PROPERTY (fonction systme) la page 143.
page_size Taille de la page spcifie, en octets. La valeur par dfaut
est 1024.
encryption (Y/N) Indique si la base de donnes est crypte.

744
Chapitre 5. Tables systme

blank_padding (Y/N) Indique si la base de donnes a t cre afin


dutiliser le remplissage des chanes laide de blancs pour comparer des
chanes de la base de donnes.
case_sensitivity (Y/N) Indique si la base de donnes fait la distinction
entre les majuscules et les minuscules. Si la distinction
majuscules/minuscules a une incidence sur les comparaisons de valeurs, elle
nen a en revanche aucune sur les comparaisons de noms de table et de
colonne. Par exemple, si une base de donnes ne fait pas la distinction entre
majuscules et minuscules, vous pouvez spcifier les noms de table tels que
SYSCATALOG en majuscules ou en minuscules, mais dans une base de
donnes qui fait la distinction majuscules/minuscules, abc = ABC
nest pas vrai.
default_collation Chane correspondant la colonne collation_label de la
table SYSCOLLATION. Il sagit de la squence de classement spcifie
avec lutilitaire de cration. La squence de classement est utilise pour
toutes les comparaisons de chanes, y compris les recherches de chanes de
caractres et les comparaisons de noms de table et de colonne.
database_version Nombre entier indiquant le format de la base de
donnes.
classes_version Chane courte dcrivant la version courante de la
bibliothque dexcution Java utilise par cette base de donnes.

745
Table systme SYSIXCOL
Nom de colonne Type de co- Contrainte Contraintes de table
lonne de colonne

table_id UNSI- NOT NULL Cl primaire. La cl


GNED INT trangre rfrence la
table SYSCOLUMN.
La cl trangre rf-
rence la table SYSIN-
DEX.

index_id UNSI- NOT NULL Cl primaire. La cl


GNED INT trangre fait rfrence
SYSINDEX.

sequence SMALLINT NOT NULL Cl primaire.

column_id UNSI- NOT NULL La cl trangre fait


GNED INT rfrence SYSCO-
LUMN.

order CHAR(1) NOT NULL


SYSIXCOL contient une ligne pour chaque colonne de chaque index.
table_id Identifie la table laquelle lindex sapplique.
index_id Identifie lindex dans lequel cette colonne est utilise. Associs,
table_id et index_id identifient un index dcrit dans SYSINDEX.
sequence Un numro unique commenant zro est affect chaque
colonne dun index. Lordre de ces numros indique limportance des
colonnes de lindex. La colonne la plus importante porte le numro de
squence 0.
column_id Numro dsignant la colonne indexe. Associs, table_id et
column_id identifient une colonne dcrite dans SYSCOLUMN.
order (A/D) Indique si la colonne dindex est trie selon un ordre croissant
ou dcroissant.

746
Chapitre 5. Tables systme

Table systme SYSJAR


Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table

jar_id INTEGER NOT NULL Cl primaire.

creator UNSIGNED INT NOT NULL

jar_name LONG VAR- NOT NULL Index unique.


CHAR

jar_file LONG VAR-


CHAR

create_time TIMESTAMP NOT NULL


update_time TIMESTAMP NOT NULL

remarks LONG VAR-


CHAR
jar_id Champ contenant lID du fichier JAR.
creator Numro dutilisateur du crateur de fichier JAR.
jar_name Nom du fichier JAR.
jar_file Nom du fichier JAR.
create_time Heure de cration du fichier JAR.
update_time Heure de la dernire mise jour du fichier JAR.
remarks Champ de commentaire.

747
Table systme SYSJARCOMPONENT
Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table

component_id INTEGER NOT NULL Cl primaire.

jar_id INTEGER La cl trangre


fait rfrence
SYSJAR.

component_name LONG VAR-


CHAR

component_type CHAR(1)

create_time TIMESTAMP NOT NULL

contents LONG BINARY

remarks LONG VAR-


CHAR
component_id Cl primaire contenant lID du composant.
jar_id Champ contenant le numro dID du fichier JAR.
component_name Nom du composant.
component_type Type du composant.
create_time Champ contenant lheure de cration du composant.
contents Code octet du fichier JAR.
remarks Champ de commentaire.

748
Chapitre 5. Tables systme

Table systme SYSJAVACLASS

Nom de colonne Type de colonne Contrainte de Contraintes de


colonne table

class_id INTEGER NOT NULL Cl primaire.

replaced_by INTEGER La cl trangre


fait rfrence
SYSJAVACLASSES.-
class_id.

creator UNSIGNED INT NOT NULL La cl trangre


fait rfrence
SYSUSERPERM.-
user_id.

jar_id INTEGER

type_id SMALLINT La cl trangre


fait rfrence
SYSUSER-
TYPE.

class_name LONG VAR- NOT NULL


CHAR

public CHAR(1) NOT NULL


component_id INTEGER La cl trangre
fait rfrence
SYSJARCOM-
PONENT.

create_time TIMESTAMP NOT NULL


update_time TIMESTAMP NOT NULL

class_descriptor LONG BINARY

remarks LONG VAR-


CHAR

La table systme SYSJAVACLASS contient toutes les informations relatives


aux classes Java.
class_id Champ contenant lID de la classe Java. Il sagit galement de la
cl primaire de la table.

749
replaced_by Champ qui rfrence le champ de cl primaire, class_id.
creator Numro dutilisateur du crateur de la classe.
jar_id ID du fichier JAR dorigine de la classe.
type_id ID du type dutilisateur.
class_name Nom de la classe Java.
public Indique si la classe est publique (Y) ou prive (N).
component_id ID du composant dans SYSJARCOMPONENT.
create_time Champ contenant lheure de cration de la classe.
update_time Champ contenant lheure de la dernire mise jour de la
classe.
class_descriptor Non utilis.
remarks Chane de commentaire.

750
Chapitre 5. Tables systme

Table systme SYSLOGIN


Nom de colonne Type de co- Contrainte de Contraintes de
lonne colonne table

integrated_login_- CHAR(128) NOT NULL Cl primaire.


id

login_uid UNSI- NOT NULL La cl trangre


GNED INT fait rfrence
SYSUSERPERM.-
user_id.
remarks LONG VAR-
CHAR
Cette table contient tous les noms de profil utilisateur pouvant servir tablir
une connexion la base de donnes, laide dun login intgr. Pour des
raisons de scurit, seuls les utilisateurs dtenant les droits DBA sont
habilits consulter cette table.
integrated_login_id Chane contenant le nom du profil utilisateur employ
pour crer le mappage sur un ID utilisateur dans la base de donnes.
Lorsquun utilisateur parvient se connecter laide de ce profil utilisateur,
et que la base de donnes accepte les logins intgrs, cet utilisateur peut
accder la base de donnes sans fournir dID utilisateur ni de mot de passe.
login_uid Cl trangre pour la table systme SYSUSERPERM.
remarks Chane de commentaire.

751
Table systme SYSOPTBLOCK
Cette table est rserve au systme.

752
Chapitre 5. Tables systme

Table systme SYSOPTION


Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table

user_id UNSIGNED INT NOT NULL Cl primaire. La


cl trangre fait
rfrence SY-
SUSERPERM.
option CHAR(128) NOT NULL Cl primaire.

setting LONG VAR- NOT NULL


CHAR
La configuration des options est stocke dans la table SYSOPTION par la
commande SET. Chaque utilisateur peut avoir son propre paramtrage pour
chaque option. En outre, les paramtres de lID utilisateur PUBLIC
constituent les valeurs par dfaut des ID utilisateur qui nont pas t
configurs.
user_id Numro dutilisateur auquel sapplique la valeur configure.
option Nom de loption.
setting Valeur courante de loption dsigne.

753
Table systme SYSOPTJOINSTRATEGY
Cette table est rserve au systme.

754
Chapitre 5. Tables systme

Table systme SYSOPTORDER


Cette table est rserve au systme.

755
Table systme SYSOPTQUANTIFIER
Cette table est rserve au systme.

756
Chapitre 5. Tables systme

Table systme SYSOPTREQUEST


Cette table est rserve au systme.

757
Table systme SYSOPTREWRITE
Cette table est rserve au systme.

758
Chapitre 5. Tables systme

Table systme SYSOPTSTAT


Cette table stocke des informations sur le modle destimation des cots.
Elle est rserve au systme.

759
Table systme SYSPROCEDURE

Nom de co- Type de colonne Contrainte Contraintes de table


lonne de colonne

proc_id UNSIGNED INT NOT NULL Cl primaire.

creator UNSIGNED INT NOT NULL Index unique sur cette


colonne et ce proc_-
name. La cl tran-
gre fait rfrence
SYSUSERPERM.-
user_id.

proc_name CHAR(128) NOT NULL Index unique sur cette


colonne et ce crateur
(creator).

proc_defn LONG VARCHAR


remarks LONG VARCHAR

replicate CHAR(1) NOT NULL

srvid INTEGER La cl trangre fait


rfrence SYSSER-
VERS.

source LONG VARCHAR

avg_num_rows FLOAT

avg_cost FLOAT

stats LONG BINARY

Chaque procdure de la base de donnes est dcrite par une ligne de la table
SYSPROCEDURE.
proc_id Numro unique (numro de procdure) affect chaque
procdure et constituant la cl primaire de SYSPROCEDURE.
creator Numro dutilisateur identifiant le propritaire de la procdure. Le
nom de lutilisateur peut tre obtenu par consultation de la table
SYSUSERPERM.
proc_name Nom de la procdure. Un crateur de procdure ne peut pas
possder deux procdures de mme nom.

760
Chapitre 5. Tables systme

proc_defn Commande utilise pour crer la procdure.


remarks Chane de commentaire.
replicate (Y/N) Indique si la procdure est une source de donnes primaire
dun Replication Server install.
srvid Si la procdure sert de proxy pour une procdure sur un serveur de
base de donnes distant, identifie le serveur distant.
source Cette colonne contient la source de la procdure si loption
preserve_source_format est active. Elle permet de prserver lapparence du
texte dorigine. Pour plus dinformations, reportez-vous la section Option
PRESERVE_SOURCE_FORMAT [base de donnes] [ASA - Guide
dadministration, page 744].
avg_num_rows Informations recueillies pour tre utilises dans
loptimisation des requtes lorsque la procdure apparat dans la clause
FROM.
avg_cost Informations recueillies pour tre utilises dans loptimisation
des requtes lorsque la procdure apparat dans la clause FROM.
stats Informations recueillies pour tre utilises dans loptimisation des
requtes lorsque la procdure apparat dans la clause FROM.

761
Table systme SYSPROCPARM

Nom de colonne Type de colonne Contrainte Contrainte de table


de colonne

proc_id UNSIGNED INT NOT NULL Cl primaire. La cl


trangre fait rf-
rence SYSPROCE-
DURE.
parm_id SMALLINT NOT NULL Cl primaire.

parm_type SMALLINT NOT NULL

parm_mode_in CHAR(1) NOT NULL

parm_mode_out CHAR(1) NOT NULL

domain_id SMALLINT NOT NULL La cl trangre fait


rfrence SYSDO-
MAIN.

width SMALLINT NOT NULL


scale SMALLINT NOT NULL

parm_name CHAR(128) NOT NULL

remarks LONG VAR-


CHAR

default LONG VAR-


CHAR

user_type INTEGER

Chaque paramtre dune procdure de la base de donnes est dcrit par une
ligne de la table SYSPROCEDURE.
proc_id Identificateur unique de la procdure laquelle ce paramtre
appartient.
parm_id La numrotation des paramtres de chaque procdure commence
1. Lordre des numros de paramtre correspond celui dans lequel ils ont
t dfinis.
Pour les fonctions, le premier paramtre porte le nom de la fonction et
reprsente la valeur renvoye pour cette fonction.
parm_type Un paramtre appartient lun des types suivants :

762
Chapitre 5. Tables systme

0 Paramtre normal (variable)


1 Variable de rsultats : utilise avec une procdure qui renvoie des
jeux de rsultats.

2 Valeur erreur SQLSTATE


3 Valeur erreur SQLCODE
4 Valeur renvoye par la fonction
parm_mode_in (Y/N) Indique si ce paramtre transmet une valeur la
procdure (paramtre IN ou INOUT).
parm_mode_out (Y/N) Indique si ce paramtre renvoie une valeur issue de
la procdure (paramtre OUT ou INOUT) ou des colonnes de la clause
RESULT.
domain_id Identifie le type de donnes du paramtre laide du numro
de type de donnes indiqu dans la table SYSDOMAIN.
width Longueur dun paramtre de type chane, prcision dun paramtre
numrique ou nombre doctets de stockage pour tout autre type de donnes.
scale Nombre de chiffres aprs le signe dcimal pour les paramtres
numriques et zro pour tous les autres types de donnes.
parm_name Nom du paramtre.
remarks Chane de commentaire.
default Non utilis.
user_type Type dutilisateur du paramtre.

763
Table systme SYSPROCPERM
Nom de colonne Type de colonne Contrainte Contraintes de table
de colonne

proc_id UNSI- NOT NULL Cl primaire. La cl


GNED INT trangre fait rf-
rence SYSPROCE-
DURE.
grantee UNSI- NOT NULL Cl primaire.
GNED INT La cl trangre
fait rfrence
SYSUSERPERM.-
user_id.
Seuls les utilisateurs autoriss peuvent appeler une procdure. Chaque ligne
de la table SYSPROCPERM correspond une autorisation dappel de
procdure octroye un utilisateur.
proc_id Numro identifiant de faon unique la procdure sur laquelle
lautorisation a t octroye.
grantee Numro de lID utilisateur qui lautorisation a t octroye.

764
Chapitre 5. Tables systme

Table systme SYSPUBLICATION


Nom de colonne Type de co- Contrainte Contraintes de table
lonne de colonne

publication_id UNSI- NOT NULL Cl primaire.


GNED INT

creator UNSI- NOT NULL Index unique. La cl


GNED INT trangre fait rfrence
SYSUSERPERM.-
user_id.
publication_name CHAR(128) NOT NULL Index unique.

remarks LONG VAR-


CHAR

type CHAR(1) NOT NULL


Chaque ligne dcrit une publication SQL Remote ou MobiLink.
publication_id Numro didentification unique de la publication.
creator Propritaire de la publication.
publication_name Nom de la publication.
remarks Chane de commentaire.
type Lutilisation de cette colonne est dconseille.

765
Table systme SYSREMOTEOPTION
Fonction Chaque ligne dcrit les valeurs dun paramtre de liaison de message
SQL Remote.
Colonnes

Column Type de donnes Contrainte Contraintes de table


de colonne

option_id UNSIGNED INT NOT NULL Cl primaire. La cl tran-


gre fait rfrence SYS-
REMOTEOPTIONTYPE.

user_id UNSIGNED INT NOT NULL Cl primaire.


setting VARCHAR(255) NOT NULL
Certaines colonnes de cette table contiennent des donnes qui peuvent
savrer sensibles. Cest pourquoi laccs cette table est limit aux
utilisateurs bnficiant de droits DBA. La vue SYSREMOTEOPTION2
offre un accs public aux donnes de cette table, lexception des colonnes
pouvant savrer sensibles.
option_id Numro didentification du paramtre de liaison de message.
user_id ID utilisateur pour lequel le paramtre est dfini.
setting Valeur du paramtre de liaison de message.

766
Chapitre 5. Tables systme

Table systme SYSREMOTEOPTIONTYPE


Fonction Chaque ligne dcrit un paramtre de liaison de message SQL Remote.
Colonnes

Column Type de don- Contrainte de Contraintes de


nes colonne table

option_id UNSIGNED INT NOT NULL Cl primaire.

type_id UNSIGNED INT NOT NULL La cl trangre


fait rfrence
SYSREMOTE-
TYPE.
option VARCHAR(128) NOT NULL
option_id Numro didentification du paramtre de liaison de message.
type_id Numro didentification du type de message utilisant ce paramtre
option Nom du paramtre de liaison de message.

767
Table systme SYSREMOTETYPE
Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table

type_id SMALLINT NOT NULL Cl primaire.

type_name CHAR(128) NOT NULL Index unique.

publisher_address LONG VAR- NOT NULL


CHAR

remarks LONG VAR-


CHAR
La table systme SYSREMOTETYPE contient des informations relatives
SQL Remote.
type_id Identifie le systme de messagerie support par SQL Remote et
employ pour envoyer des messages cet utilisateur.
type_name Nom du systme de messagerie support par SQL Remote.
publisher_address Adresse de lditeur de la base de donnes distante.
remarks Chane de commentaire.

768
Chapitre 5. Tables systme

Table systme SYSREMOTEUSER

Nom de colonne Type de colonne Contrainte Contraintes de table


de colonne

user_id UNSIGNED INT NOT NULL Cl primaire. La cl


trangre fait rf-
rence SYSUSER-
PERM.
consolidate CHAR(1) NOT NULL

type_id SMALLINT NOT NULL La cl trangre fait


rfrence SYSRE-
MOTETYPE.

address LONG VAR- NOT NULL


CHAR

frequency CHAR(1) NOT NULL Index unique.

send_time TIME Index unique.

log_send NUMERIC(20,0) NOT NULL

time_sent TIMESTAMP
log_sent NUMERIC(20,0) NOT NULL

confirm_sent NUMERIC(20,0) NOT NULL

send_count INTEGER NOT NULL

resend_count INTEGER NOT NULL

time_received TIMESTAMP
log_received NUMERIC(20,0) NOT NULL

confirm_received NUMERIC(20,0)

receive_count INTEGER NOT NULL

rereceive_count INTEGER NOT NULL

Chaque ligne dcrit un ID utilisateur possdant les autorisations REMOTE


(souscripteur), ainsi que ltat des messages SQL Remote transmis cet
utilisateur ou envoys par ce dernier.
user_id ID de lutilisateur possdant les autorisations REMOTE.

769
(Y/N) Indique si lutilisateur possde lautorisation
consolidate
CONSOLIDATE (Y) ou REMOTE (N).
type_id Identifie le systme de messagerie support par SQL Remote et
employ pour envoyer des messages cet utilisateur.
address Adresse de destination des messages SQL Remote. Cette adresse
doit tre approprie pour le type dadresse (address_type).
frequency Frquence denvoi des messages SQL Remote.
send_time Heure du prochain envoi de messages cet utilisateur.
log_send Les messages ne sont envoys quaux souscripteurs pour
lesquels la valeur de log_send est suprieure celle de log_sent.
time_sent Heure denvoi du dernier message adress ce souscripteur.
log_sent Position dans le journal de la dernire opration transmise.
confirm_sent Position dans le journal de la dernire opration confirme
provenant de ce souscripteur.
send_count Nombre de messages SQL Remote envoys.
resend_count Compteur permettant de sassurer que les messages ne sont
appliqus quune seule fois la base de donnes du souscripteur.
time_received Heure de rception du dernier message de ce souscripteur.
log_received Position dans le journal de la base de donnes du
souscripteur de la dernire opration reue par la base courante.
confirm_received Position dans le journal de la base de donnes du
souscripteur de la dernire opration ayant fait lobjet dun message de
confirmation.
receive_count Nombre de messages reus.
rereceive_count Compteur permettant de sassurer que les messages ne
sont appliqus quune seule fois la base de donnes courante.

770
Chapitre 5. Tables systme

Table systme SYSSCHEDULE

Nom de colonne Type de colonne Contrainte Contraintes de


de colonne table

event_id INTEGER NOT NULL Cl primaire. La


cl trangre fait
rfrence SY-
SEVENT.
sched_name VARCHAR(128) NOT NULL Cl primaire.

recurring TINYINT NOT NULL

start_time TIME NOT NULL

stop_time TIME

start_date DATE

days_of_week TINYINT

days_of_month UNSIGNED INT

interval_units CHAR(10)

interval_amt INTEGER

Chaque ligne de la table SYSSCHEDULE dcrit quel moment un


vnement doit tre dclench, tel que dfini par la clause SCHEDULE de
linstruction CREATE EVENT.
event_id Numro unique affect chaque vnement.
sched_name Nom associ une planification.
recurring (0/1) Indique si la planification est rptitive.
start_time Heure de dbut de la planification.
stop_time Heure de fin de la planification, si la condition BETWEEN a t
utilise.
start_date Premire date planifie pour lexcution de lvnement.
days_of_week Masque binaire indiquant les jours de la semaine auxquels
lvnement est planifi :
x01 = dimanche
x02 = lundi

771
x04 = mardi
x08 = mercredi

x10 = jeudi

x20 = vendredi
x40 = samedi
days_of_month Masque binaire indiquant les jours du mois auxquels
lvnement est planifi :
x01 = premier jour

x02 = deuxime jour


x40000000 = 31e jour
x80000000 = dernier jour du mois
interval_units Unit de lintervalle dfini par la clause EVERY :

HH = heures
NN = minutes
SS = secondes

interval_amt Priode dfinie par la clause EVERY.

772
Chapitre 5. Tables systme

Table systme SYSSERVERS


Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table

srvid INTEGER NOT NULL Cl primaire.

srvname VARCHAR(128) NOT NULL

srvclass LONG VAR- NOT NULL


CHAR

srvinfo LONG VAR-


CHAR

srvreadonly CHAR(1) NOT NULL


Chaque ligne dcrit un serveur distant.
srvid Identificateur du serveur distant.
srvname Nom du serveur distant.
srvclass Classe du serveur, telle que spcifie dans linstruction CREATE
SERVER.
srvinfo Informations sur le serveur.
srvreadonly Y si le serveur est en lecture seule ; N dans le cas contraire.

773
Table systme SYSSQLSERVERTYPE
Nom de colonne Type de co- Contrainte de Contraintes de
lonne colonne table

ss_user_type SMALLINT NOT NULL Cl primaire.

ss_domain_id SMALLINT NOT NULL

ss_type_name VARCHAR NOT NULL


(30)

primary_sa_- SMALLINT NOT NULL


domain_id

primary_sa_user_- SMALLINT
type
Cette table contient des informations relatives la compatibilit avec
Adaptive Server Enterprise.
ss_user_type Type de lutilisateur dAdaptive Server Enterprise.
ss_domain_id ID de domaine dAdaptive Server Enterprise.
ss_type_name Champ contenant le nom du type dAdaptive Server
Enterprise.
primary_sa_domain_id ID de domaine primaire dAdaptive Server
Enterprise.
primary_sa_user_type Champ de type UNSIGNED INT affichant le type
dutilisateur primaire dAdaptive Server Enterprise.

774
Chapitre 5. Tables systme

Table systme SYSSUBSCRIPTION


Nom de colonne Type de colonne Contrainte Contraintes de table
de colonne

publication_id UNSIGNED INT NOT NULL Cl primaire. La cl


trangre fait rf-
rence SYSPUBLI-
CATION.
user_id UNSIGNED INT NOT NULL Cl primaire. La cl
trangre fait rf-
rence SYSUSER-
PERM.

subscribe_by CHAR(128) NOT NULL Cl primaire.

created NUMERIC(20,0) NOT NULL

started NUMERIC(20,0)
Chaque ligne dcrit la souscription une publication dun ID utilisateur (qui
doit possder les autorisations REMOTE).
publication_id Identificateur de la publication laquelle lID utilisateur
est abonn.
user_id ID de lutilisateur ayant souscrit la publication.
subscribe_by Valeur de lexpression SUBSCRIBE BY de la souscription,
le cas chant.
created Emplacement, dans le journal de transactions, auquel la
souscription a t cre.
started Emplacement, dans le journal de transactions, auquel la
souscription a t ouverte.

775
Table systme SYSSYNC

Nom de colonne Type de colonne Contrainte Contraintes de


de colonne table

sync_id UNSIGNED INT NOT NULL Cl primaire.

type CHAR(1) NOT NULL

publication_id UNSIGNED INT La cl trangre


fait rfrence
SYSPUBLICA-
TION.

progress NUMERIC(20,0)

site_name CHAR(128)

option LONG VAR-


CHAR
server_connect LONG VAR-
CHAR
server_conn_type LONG VAR-
CHAR
last_download_- TIMESTAMP
time
last_upload_time TIMESTAMP NOT NULL
par dfaut,
jan-1-1900

created NUMERIC( 20, 0)

log_sent NUMERIC(20,0)

generation_number INTEGER NOT NULL


par dfaut 0

extended_state VARCHAR(1024) NOT NULL


par dfaut

Cette table contient des informations relatives la synchronisation


MobiLink. Certaines colonnes de cette table contiennent des donnes qui
peuvent savrer sensibles. Cest pourquoi laccs cette table est limit aux
utilisateurs bnficiant de droits DBA. La vue SYSSYNC2 offre un accs

776
Chapitre 5. Tables systme

public aux donnes de cette table, lexception des colonnes pouvant


savrer sensibles.
sync_id Champ SMALLINT qui identifie la ligne de faon unique.
type Champ CHAR(1) dcrivant le type dobjet de synchronisation :
D signifie dfinition, T signifie modle (template) et S signifie site.
ID publication_id trouv dans la table
publication_id
SYSPUBLICATION.
progress Offset de journal du dernier tlchargement russi.
site_name Nom dutilisateur MobiLink.
option Options de synchronisation.
server_connect Adresse ou URL du serveur de synchronisation
MobiLink.
server_conn_type Protocole de communication, tel que TCP/IP, utiliser
lors de la synchronisation.
last_download_time Indique lheure de rception du dernier flux de
transfert envoy par le serveur de synchronisation MobiLink.
last_upload_time Indique lheure du dernier tlchargement
dinformations russi (mesure sur le serveur de synchronisation MobiLink).
created Position dans le journal laquelle labonnement a t cr.
log_sent Position du journal jusqu laquelle des informations ont t
tlcharges. Il nest pas ncessaire de recevoir un accus de rception du
tlchargement pour mettre jour lentre de cette colonne.
generation_number Pour les tlchargements orients fichier, dernier
numro de gnration reu pour cet abonnement.
extended_state Rserv un usage interne.

777
Table systme SYSTABLE

Nom de colonne Type de co- Contrainte Contraintes de table


lonne de colonne

table_id UNSI- NOT NULL Cl primaire.


GNED INT

file_id SMALLINT NOT NULL La cl trangre fait


rfrence SYSFILE.

count UNSIGNED NOT NULL


BIGINT

first_page INTEGER NOT NULL

last_page INTEGER NOT NULL

primary_root INTEGER NOT NULL

creator UNSI- NOT NULL Index unique. La cl


GNED INT trangre fait rfrence
SYSUSERPERM.-
user_id.

first_ext_page INTEGER NOT NULL


last_ext_page INTEGER NOT NULL

table_page_count INTEGER NOT NULL

ext_page_count INTEGER NOT NULL

table_name CHAR(128) NOT NULL Index unique.

table_type CHAR(10) NOT NULL


view_def LONG
VARCHAR

remarks LONG
VARCHAR

replicate CHAR(1) NOT NULL

existing_obj CHAR(1)

remote_location LONG
VARCHAR

remote_objtype CHAR(1)

778
Chapitre 5. Tables systme

Nom de colonne Type de co- Contrainte Contraintes de table


lonne de colonne

srvid INTEGER La cl trangre fait


rfrence SYSSER-
VERS.

server_type CHAR(4) NOT NULL

primary_hash_limit NOT NULL


SMALL INT

page_map_start INTEGER NOT NULL

source LONG
VARCHAR

Chaque ligne de SYSTABLE dcrit une table ou une vue de la base de


donnes.
table_id Numro unique (le numro de table) affect chaque table ou
vue, correspondant la cl primaire de SYSTABLE.
file_id Dsigne le fichier de base de donnes qui contient la table.
count Nombre de lignes de la table mis jour chaque fois que lexcution
dun point de reprise aboutit. Ce nombre est utilis par Adaptive Server
Anywhere lors de loptimisation de laccs la base de donnes. Dans le cas
dune vue, la valeur de count est toujours 0.
first_page Chaque base de donnes est subdivise en plusieurs pages de
taille fixe. Cette valeur identifie la premire page contenant des informations
pour cette table. Elle est utilise en interne pour localiser le dbut de la table.
Dans le cas dune vue, la valeur de first_page est toujours 0.
last_page Dernire page dinformations pour cette table. Dans le cas
dune vue, la valeur de last_page est toujours 0. Pour les tables temporaires
globales, 0 indique que la table a t cre laide de ON COMMIT
PRESERVE ROWS et 1 indique que la table a t cre laide de ON
COMMIT DELETE ROWS.
primary_root La valeur de primary_root permet de localiser la page
racine de lindex pour la cl primaire de la table. Dans le cas dune vue ou
dune table sans cl primaire, cette valeur est 0.
creator Numro dutilisateur identifiant le propritaire de la table ou de la
vue.
first_ext_page Premire page utilise pour stocker les extensions de ligne

779
et les objets BLOB.
last_ext_page Dernire page utilise pour stocker les extensions de ligne
et les objets BLOB. Les pages sont traites comme une liste doublement lie.
table_page_count Nombre total de pages principales utilises par cette
table.
ext_page_count Nombre total de pages dextension (objets BLOB)
utilises par cette table.
table_name Nom de la table ou de la vue. Un crateur ne peut pas
possder deux tables ou deux vues de mme nom.
table_type Colonne contenant la valeur BASE pour les tables
sous-jacentes, VIEW pour les vues et GBL TEMP pour les tables
temporaires globales. Aucune entre nest cre pour les tables temporaires
locales.
view_def Dans le cas dune vue, cette colonne contient la commande
create view utilise pour crer la vue.
remarks Chane de commentaire.
replicate (Y/N) Indique si la table est une source de donnes primaire dun
Replication Server install.
existing_obj (Y/N) Indique si la table existait auparavant.
remote_location Emplacement de stockage de lobjet distant.
remote_objtype Type de lobjet distant : T pour table, V pour vue, R pour
rpc et B pour JavaBean.
srvid ID unique du serveur sil sagit dune table Proxy.
server_type Emplacement des donnes de la table. Il peut sagir de SA ou
dOMNI.
primary_hash_limit Taille de hachage de lindex de cl primaire de cette
table.
page_map_start Dbut du mappage de pages effectu pour cette table. Les
mappages de pages facilitent les E/S bloques lors des balayages squentiels.
source Cette colonne contient la source dune vue si loption
preserve_source_format est active. Elle permet de prserver lapparence du
texte dorigine. Pour plus dinformations, reportez-vous la section Option
PRESERVE_SOURCE_FORMAT [base de donnes] [ASA - Guide
dadministration, page 744].

780
Chapitre 5. Tables systme

Table systme SYSTABLEPERM

Nom de colonne Type de colonne Contrainte de Contraintes de


colonne table

stable_id UNSIGNED INT NOT NULL Cl primaire. La


cl trangre
fait rfrence
SYSTABLE.-
table_id.

grantee UNSIGNED INT NOT NULL Cl primaire.


La cl trangre
fait rfrence
SYSUSERPERM.-
user_id.

grantor UNSIGNED INT NOT NULL Cl primaire.


La cl trangre
fait rfrence
SYSUSERPERM.-
user_id.

ttable_id UNSIGNED INT NOT NULL La cl trangre


fait rfrence
SYSTABLE.-
table_id.

selectauth CHAR(1) NOT NULL

insertauth CHAR(1) NOT NULL

deleteauth CHAR(1) NOT NULL


updateauth CHAR(1) NOT NULL

updatecols CHAR(1) NOT NULL

alterauth CHAR(1) NOT NULL

referenceauth CHAR(1) NOT NULL

Les autorisations octroyes via la commande GRANT sont stockes dans


SYSTABLEPERM. Chaque ligne de cette table correspond une table, un
ID utilisateur octroyant lautorisation (grantor) et un ID utilisateur
bnficiaire de lautorisation (grantee).
Il est possible doctroyer plusieurs types dautorisation. Chaque autorisation

781
peut prendre lune des trois valeurs suivantes :
N Lautorisation na pas t octroye.
Y Lautorisation a t octroye.

G Lautorisation a t octroye et lutilisateur bnficiaire peut octroyer


cette autorisation un autre utilisateur (avec les options doctroi).

Autorisations
Il est possible quun autre utilisateur ait octroy au bnficiaire une autori-
sation sur la mme table. Dans ce cas, cette information doit tre enregistre
sur une ligne diffrente de SYSTABLEPERM.
stable_id Numro de la table ou de la vue laquelle sappliquent les
autorisations.
grantor Numro de lID utilisateur octroyant lautorisation.
grantee Numro de lID utilisateur qui lautorisation a t octroye.
ttable_id Dans la version actuelle dAdaptive Server Anywhere, ce
numro de table est toujours identique stable_id.
selectauth (Y/N/G) Indique si lautorisation SELECT a t accorde.
insertauth (Y/N/G) Indique si lautorisation INSERT a t accorde.
deleteauth (Y/N/G) Indique si lautorisation DELETE a t accorde.
updateauth (Y/N/G) Indique si lautorisation UPDATE a t octroye pour
toutes les colonnes de la table.
updatecols (Y/N) Indique si lautorisation UPDATE na t octroye que
sur certaines colonnes de la table. La valeur Y indique lexistence dune ou
de plusieurs lignes dans SYSCOLPERM relatives loctroi de lautorisation
UPDATE sur les colonnes de cette table.
alterauth (Y/N/G) Indique si lautorisation ALTER a t accorde.
referenceauth (Y/N/G) Indique si lautorisation REFERENCE a t
octroye.

782
Chapitre 5. Tables systme

Table systme SYSTRIGGER

Nom de colonne Type de colonne Contrainte Contraintes de table


de colonne

trigger_id UNSIGNED INT NOT NULL Cl primaire.

table_id UNSIGNED INT NOT NULL La cl trangre


fait rfrence
SYSTABLE.table_-
id.

event CHAR(1) NOT NULL Unique.

trigger_time CHAR(1) NOT NULL Unique.

trigger_order SMALLINT Unique.

foreign_table_id UNSIGNED INT Unique. La cl tran-


gre fait rfrence
SYSFOREIGNKEY.

foreign_key_id SMALLINT Unique. La cl tran-


gre fait rfrence
SYSFOREIGNKEY.

referential_action CHAR(1)

trigger_name CHAR(128) Unique.


trigger_defn LONG VAR- NOT NULL
CHAR

remarks LONG VAR-


CHAR

source LONG VAR-


CHAR

Chaque trigger de la base de donnes est dcrit par une ligne de la table
SYSTRIGGER. Cette table contient galement les triggers gnrs
automatiquement pour les dfinitions de cls trangres qui mettent en
oeuvre une action dintgrit rfrentielle supporte par un trigger (ON
DELETE CASCADE, par exemple).
trigger_id Numro unique (numro de trigger) affect chaque trigger,
qui est la cl primaire de SYSTRIGGER.
table_id Numro identifiant de faon unique la table laquelle ce trigger

783
appartient.
event Evnement(s) dclenchant lexcution du trigger. Cette valeur,
constitue dun caractre unique, correspond lvnement dclencheur
spcifi lors de la cration du trigger.
A INSERT, DELETE
B INSERT, UPDATE

C UPDATE

D DELETE
E DELETE, UPDATE
I INSERT

U UPDATE
M INSERT, DELETE, UPDATE
trigger_time Heure dexcution du trigger. Cette valeur, constitue dun
caractre unique, correspond lheure de dclenchement spcifie lors de la
cration du trigger :
A AFTER (aprs)
B BEFORE (avant)
trigger_order Ordre dans lequel le trigger est dclench. Dtermine
lordre de dclenchement de chaque trigger lorsque plusieurs triggers de
mme type (insert, update ou delete) doivent tre excuts en mme temps
(before ou after).
foreign_table_id Numro de la table contenant une dfinition de cl
trangre mettant en oeuvre une action dintgrit rfrentielle (ON
DELETE CASCADE, par exemple).
foreign_key_id Numro identifiant la cl trangre associe la table
rfrence par foreign_table_id.
referential_action Action dfinie par une cl trangre. Cette valeur,
constitue dun caractre unique, dsigne laction spcifie lors de la
cration de la cl trangre :
C CASCADE
D SET DEFAULT
N SET NULL

784
Chapitre 5. Tables systme

R RESTRICT
trigger_name Nom du trigger. Une table ne peut pas possder deux
triggers de mme nom.
trigger_defn Commande utilise pour crer le trigger.
remarks Chane de commentaire.
source Cette colonne contient la source du trigger si loption
preserve_source_format est active. Elle permet de prserver lapparence du
texte dorigine. Pour plus dinformations, reportez-vous la section Option
PRESERVE_SOURCE_FORMAT [base de donnes] [ASA - Guide
dadministration, page 744].

785
Table systme SYSTYPEMAP
Nom de colonne Type de colonne Contrainte Contraintes de table
de colonne

ss_user_type SMALLINT NOT NULL

sa_domain_id SMALLINT NOT NULL La cl trangre fait


rfrence SYSDO-
MAIN.

ss_user_type SMALLINT

nullable CHAR(1)
La table systme SYSTYPEMAP contient les valeurs assurant la
compatibilit avec la table systme SYSSQLSERVERTYPE.
ss_user_type Type de lutilisateur dAdaptive Server Enterprise.
sa_domain_id ID du domaine dAdaptive Server Anywhere.
ss_user_type Type de lutilisateur dAdaptive Server Anywhere.
nullable Champ indiquant si la colonne accepte les valeurs NULL.

786
Chapitre 5. Tables systme

Table systme SYSUSERMESSAGES


Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table

error INTEGER NOT NULL Unique.

uid UNSIGNED INT NOT NULL

description VARCHAR(255) NOT NULL


langid SMALLINT NOT NULL Unique.
Chaque ligne contient un message dfini par lutilisateur et correspondant
une condition derreur.
error Numro identifiant de faon unique la condition derreur.
uid Numro de lutilisateur qui a dfini le message.
description Message correspondant la condition derreur.
langid Rserv.

787
Table systme SYSUSERPERM

Nom de colonne Type de colonne Contrainte de Contraintes de


colonne table

user_id UNSIGNED INT NOT NULL Cl primaire.

user_name CHAR(128) NOT NULL Index unique.

password BINARY(36)

resourceauth CHAR(1) NOT NULL

dbaauth CHAR(1) NOT NULL

scheduleauth CHAR(1) NOT NULL

publishauth CHAR(1) NOT NULL

remotedbaauth CHAR(1) NOT NULL

user_group CHAR(1) NOT NULL

remarks LONG VAR-


CHAR

Droits DBA requis


SYSUSERPERM contient des mots de passe. Les droits DBA sont donc
ncessaires pour y effectuer des slections laide de SELECT.
Chaque ligne de SYSUSERPERM dcrit un ID utilisateur.
user_id Numro unique affect chaque nouvel ID utilisateur et
correspondant la cl primaire de SYSUSERPERM.
user_name Chane contenant lID unique de lutilisateur.
password Mot de passe pour lID utilisateur. Ce mot de passe contient la
valeur NULL pour les ID utilisateur spciaux SYS, PUBLIC et dbo. Ainsi,
nul ne peut se connecter ces ID utilisateur.
resourceauth (Y/N) Indique si lutilisateur dispose du droit RESOURCE.
La cration de tables requiert le droit RESOURCE.
dbaauth (Y/N) Indique si lutilisateur possde les droits DBA
(administrateur de base de donnes). Ces droits confrent un pouvoir
important. Pour des raisons de scurit, il est conseill de les rserver un
nombre dID utilisateur aussi restreint que possible.

788
Chapitre 5. Tables systme

scheduleauth (Y/N) Indique si lutilisateur dispose du droit SCHEDULE.


Non utilis actuellement.
publishauth (Y/N) Indique si lutilisateur possde les droits dditeur SQL
Remote.
remotedbaauth (Y/N) Indique si lutilisateur possde les droits DBA
distants SQL Remote.
user_group (Y/N) Indique si lutilisateur est un groupe.
remarks Chane de commentaire.
Lors de linitialisation dune base de donnes, les ID utilisateur suivants sont
gnrs :
SYS Crateur de toutes les tables systme.

PUBLIC ID utilisateur spcial, utilis pour enregistrer les autorisations


de type PUBLIC.
DBA LID utilisateur de ladministrateur de base de donnes est le seul
exploitable dans un systme initialis. Le mot de passe initial est SQL.

dbo Propritaire de nombreuses procdures stockes du systme et vues


de fonctionnalits Transact-SQL.
Il est impossible de se connecter aux ID utilisateur SYS, PUBLIC ou dbo.

789
Table systme SYSUSERTYPE

Nom de colonne Type de co- Contrainte Contraintes de table


lonne de colonne

type_id SMALLINT NOT NULL Cl primaire.

creator UNSI- NOT NULL La cl trangre


GNED INT fait rfrence
SYSUSERPERM.user_-
id.

domain_id SMALLINT NOT NULL La cl trangre fait rf-


rence SYSDOMAIN.

nulls CHAR(1) NOT NULL

width SMALLINT NOT NULL

scale SMALLINT NOT NULL


type_name CHAR(128) NOT NULL Unique.

default LONG
VARCHAR

check LONG
VARCHAR

format_str CHAR(128)

super_type_id SMALLINT La cl trangre


fait rfrence
SYSUSERTYPE.type_id.

Chaque ligne contient la description dun type de donnes dfini par


lutilisateur.
type_id Numro unique identifiant le type de donnes dfini par
lutilisateur.
creator Numro dutilisateur du propritaire du type de donnes.
domain_id Type de donnes sur lequel ce type de donnes utilisateur est
fond, indiqu par un numro de type de donnes figurant dans la table
SYSDOMAIN.
nulls (Y/N/U) Indique si le type de donnes dfini par lutilisateur accepte
les valeurs NULL. Une valeur U indique que la valeur NULL nest pas

790
Chapitre 5. Tables systme

spcifie.
width Longueur dune colonne de type chane, prcision dune colonne
numrique ou nombre doctets de stockage pour tout autre type de donnes.
scale Nombre de chiffres aprs le signe dcimal pour les paramtres
numriques et zro (0) pour tout autre type de donnes.
type_name Nom du type de donnes.
default Valeur par dfaut du type de donnes.
check Condition CHECK associe au type de donnes.
format_str Non utilis actuellement.

791
Table systme SYSWEBSERVICE

Nom de co- Type de co- Contrainte Contraintes de table


lonne lonne de colonne

service_id UNSI- NOT NULL Cl primaire.


GNED INT

service_name CHAR(128) NOT NULL

service_type VAR- NOT NULL


CHAR(40)

auth_required CHAR(1) NOT NULL

secure_required CHAR(1) NOT NULL

url_path CHAR(1) NOT NULL

user_id UNSI-
GNED INT

paramtre VAR-
CHAR(250)

instruction LONG VAR-


CHAR

remarks LONG VAR-


CHAR

Chaque ligne contient une description dun service Web.


service_id Numro didentification unique du service Web.
service_name Nom attribu au service Web.
service_type Type du service ; par exemple, RAW, HTTP, XML, SOAP ou
DISH.
auth_required (Y/N) Indique si toutes les demandes doivent contenir un
ID dutilisateur et un mot de passe corrects.
secure_required (Y/N) Indique si des connexions non scurises, comme
HTTP, doivent tre acceptes, ou seulement des connexions scurises,
comme HTTPS.
url_path Gre linterprtation des URL.
user_id Si lauthentification est active, identifie lutilisateur, ou le groupe

792
Chapitre 5. Tables systme

dutilisateurs, qui bnficie de lautorisation dutiliser le service. Si


lauthentification est dsactive, indique le compte utiliser pour le
traitement de demandes.
parameter Prfixe qui identifie les services SOAP inclure dans un
service DISH.
instruction Instruction SQL qui est toujours excute en rponse une
demande. Si sa valeur est NULL, les instructions arbitraires contenues dans
chaque demande sont excutes la place. Ce paramtre est ignor pour les
services de type DISH.

793
Autres tables systmes
Les informations suivantes portent sur les tables systme utilises par Java
dans la base de donnes et SQL Remote.

Tables systme Java


Les tables systme utilises par Java dans la base de donnes sont
rpertories ci-dessous. Les relations de cl trangre entre des tables sont
indiques par des flches : la flche conduit de la table trangre la table
primaire.

Tables systme MobiLink


Pour plus dinformations sur les tables systme MobiLink,
reportez-vous la section Tables systme MobiLink [MobiLink - Guide
dadministration, page 537].

Tables systme SQL Remote


Pour plus dinformations sur les tables systme de SQL Remote,

794
Chapitre 5. Tables systme

reportez-vous la section Tables systme SQL Remote [SQL Remote -


Guide de lutilisateur, page 358].

795
CHAPITRE 6

Vues systme

Prsentation Ce chapitre rpertorie les vues prdfinies pour les tables systme.
Sommaire Sujet : page

Introduction 798

Vues compatibles avec Transact-SQL 809

797
Introduction
Les tables systme dcrites dans la section Tables systme identifient les
tables, les ID utilisateur, etc. laide de nombres. Mme si ce codage
prsente un rel intrt au niveau du fonctionnement interne du produit, il
rend linterprtation des tables difficile. Un certain nombre de vues systme
prdfinies sont fournies afin de prsenter ces informations dans des tables
systme plus faciles interprter.

Dfinition dune vue systme


Sybase Central comporte des informations dtailles sur les vues systme,
notamment leur dfinition :
Pour visualiser les vues systme, cliquez sur une base de donnes
connecte avec le bouton droit et slectionnez Filtrer les objets par
propritaire, puis cochez loption SYS.

Ouvrez le dossier Vues de la base.


Pour afficher la dfinition dune vue, slectionnez celle-ci dans le volet
gauche, puis cliquez sur longlet SQL dans le volet droit. Pour afficher les
donnes, ouvrez le dossier Vue dans le volet gauche, puis slectionnez
une vue. Dans le volet droit, cliquez sur longlet Donnes.

Vue systme SYSARTICLECOLS

Nom de la vue Table sous-jacente Remarques

SYSARTICLECOLS Table systme SY-


SARTICLECOL la
page 711

Vue systme SYSARTICLES

Nom de la vue Table sous-jacente Remarques

SYSARTICLES Table systme SY-


SARTICLE la
page 710

798
Chapitre 6. Vues systme

Vue systme SYSCAPABILITIES

Nom de la vue Tables sous-jacentes Remarques

SYSCAPABILITIES Table systme SYS-


CAPABILITY la
page 716
Table systme SYS-
CAPABILITYNAME
la page 717

Vue systme SYSCATALOG

Nom de la vue Table sous-jacente Remarques

SYSCATALOG Table systme SYSTA-


BLE la page 778

Vue systme SYSCOLAUTH

Nom de la vue Table sous-jacente Remarques

SYSCOLAUTH Table systme SYS- Cette vue prsente des


COLPERM la informations relatives
page 721 la mise jour des co-
lonnes dans SYSCOL-
PERM, dans un format
plus lisible.

Vue systme SYSCOLSTATS

Nom de la vue Table sous-jacente Remarques

SYSCOLSTATS Table systme SYS-


COLSTAT la
page 723

799
Vue systme SYSCOLUMNS

Nom de la vue Table sous-jacente Remarques

SYSCOLUMNS Table systme SYS-


COLUMN la
page 725

Vue systme SYSFOREIGNKEYS

Nom de la vue Tables sous-jacentes Remarques

SYSFOREIGNKEYS Table systme SYS-


FOREIGNKEY la
page 737
Table systme SYSFK-
COL la page 736

Vue systme SYSGROUPS

Nom de la vue Table sous-jacente Remarques

SYSGROUPS Table systme SYS-


GROUP la page 739

Vue systme SYSINDEXES

Nom de la vue Tables sous-jacentes Remarques

SYSINDEXES Table systme SYSIN-


DEX la page 742
Table systme SYSIX-
COL la page 746

Vue systme SYSOPTIONS

Nom de la vue Table sous-jacente Remarques

SYSOPTIONS Table systme SYSOP-


TION la page 753

800
Chapitre 6. Vues systme

Vue systme SYSOPTORDERS


Cette vue est rserve au systme.

Vue systme SYSOPTPLANS


Cette vue est rserve au systme.

Vue systme SYSOPTSTRATEGIES


Cette vue est rserve au systme.

Vue systme SYSPROCAUTH

Nom de la vue Table sous-jacente Remarques

SYSPROCAUTH Table systme SYS- Cette vue prsente les


PROCPERM la informations relatives
page 764 aux autorisations sur les
procdures figurant dans
SYSPROCPERM, dans
un format plus lisible.

Vue systme SYSPROCPARMS

Nom de la vue Table sous-jacente Remarques

SYSPROCPARMS Table systme SYS- Cette vue prsente les


PROCPARM la paramtres de procdure
page 762 de la table SYSPROC-
PARM dans un format
plus lisible.

801
Vue systme SYSPUBLICATIONS

Nom de la vue Tables sous-jacentes Remarques

SYSPUBLICATIONS Table systme SY- Cette vue prsente le


SUSERPERM la nom dutilisateur de la
page 788 table SYSUSERPERM
Table systme SYS- pour tous les crateurs
PUBLICATION la et affiche le nom de
page 765 la publication et les
remarques de la table
SYSPUBLICATION
dans un format plus
lisible.

Vue systme SYSREMOTEOPTION2

Nom de la vue Tables sous-jacentes Remarques

SYSREMOTEOP- Table systme SYSREMO- Prsente les colonnes


TION2 TEOPTION la page 766 des vues SYSREMO-
Pour plus dinformations, TEOPTION et SYSRE-
reportez-vous la section MOTEOPTIONTYPE
Table systme SYSRE- qui ne contiennent pas
MOTEOPTIONTYPE la de donnes sensibles
page 767. dans un format plus
lisible.

802
Chapitre 6. Vues systme

Vue systme SYSREMOTEOPTIONS

Nom de la vue Tables sous-jacentes Remarques

SYSREMOTEOP- Table systme SYSRE- Certaines colonnes de


TIONS MOTEOPTION la cette vue contiennent
page 766 des donnes qui peuvent
Pour plus dinforma- savrer sensibles. Cest
tions, reportez-vous pourquoi laccs cette
la section Table vue est limit aux uti-
systme SYSREMO- lisateurs bnficiant
TEOPTIONTYPE la de droits DBA. La
page 767 vue SYSREMOTEOP-
TION2 offre un accs
public aux donnes non
sensibles.

Vue systme SYSREMOTETYPES

Nom de la vue Table sous-jacente Remarques

SYSREMOTETYPES Table systme SYS- Prsente les types dis-


REMOTETYPE la tants de la table SYS-
page 768 REMOTETYPE.

Vue systme SYSREMOTEUSERS

Nom de la vue Table sous-jacente Remarques

SYSREMOTEUSERS Table systme SYS-


REMOTEUSER la
page 769

803
Vue systme SYSSUBSCRIPTIONS

Nom de la vue Table sous-jacente Remarques

SYSSUBSCRIPTIONS Table systme SYS- Cette vue prsente des


PUBLICATION la informations de sous-
page 765 cription, telles que le
nom de publication,
lheure de cration et
lheure de lancement de
la table SYSPUBLICA-
TION dans un format
plus lisible.

Vue systme SYSSYNCDEFINITIONS (dconseille)


Vue des dfinitions de synchronisation concernant la synchronisation
MobiLink. Cette vue est obsolte.

Vue systme SYSSYNCPUBLICATIONDEFAULTS

Nom de la vue Table sous-jacente Remarques

SYSSYNCPUBLICA- Table systme SYS- Vue des paramtres de


TIONDEFAULTS SYNC la page 776 synchronisation par d-
Table systme SYS- faut associs aux pu-
PUBLICATION la blications impliques
page 765 dans la synchronisation
MobiLink.

Vue systme SYSSYNC2

Nom de la vue Table sous-jacente Remarques

SYSSYNC2 Table systme SYS- Union des colonnes


SYNC la page 776 des vues SYSSYNC-
PUBLICATIONDE-
FAULTS, SYSSYNCU-
SERS et SYSSYNC-
SUBSCRIPTIONS qui
ne contiennent pas de
donnes sensibles.

804
Chapitre 6. Vues systme

Vue systme SYSSYNCS

Nom de la vue Tables sous-jacentes Remarques

SYSSYNCS Table systme SYS- Union des vues SYS-


SYNC la page 776 SYNCPUBLICATION-
Table systme SYS- DEFAULTS, SYSSYN-
CUSERS et SYSSYNC-
PUBLICATION la
SUBSCRIPTIONS.
page 765
Certaines colonnes de
cette vue contiennent
des donnes qui peuvent
savrer sensibles. Cest
pourquoi laccs cette
vue est limit aux uti-
lisateurs bnficiant
de droits DBA. La vue
SYSSYNC2 offre un ac-
cs public aux donnes
non sensibles.

Vue systme SYSSYNCSUBSCRIPTIONS

Nom de la vue Table sous-jacente Remarques

SYSSYNCSUBSCRIP- Table systme SYS- Vue des paramtres de


TIONS SYNC la page 776 synchronisation asso-
Table systme SYS- cis aux souscriptions
PUBLICATION la de synchronisation Mo-
page 765 biLink.

Vue systme SYSSYNCUSERS

Nom de la vue Table sous-jacente Remarques

SYSSYNCUSERS Table systme SYS- Vue des paramtres de


SYNC la page 776 synchronisation asso-
cis aux utilisateurs de
synchronisation Mobi-
Link.

805
Vue systme SYSTABAUTH

Nom de la vue Table sous-jacente Remarques

SYSTABAUTH Table systme SYS-


TABLEPERM la
page 781

Vue systme SYSTRIGGERS

Nom de la vue Table sous-jacente Remarques

SYSTRIGGERS Table systme SYS-


TRIGGER la
page 783

Vue systme SYSUSERAUTH

Nom de la vue Table sous-jacente Remarques

SYSUSERAUTH Table systme SY- Cette vue affiche len-


SUSERPERM la semble des informations
page 788 figurant dans la table
SYSUSERPERM,
lexception des num-
ros dutilisateur. Etant
donn que cette vue af-
fiche des mots de passe,
elle ne dispose pas de
lautorisation PUBLIC
select. (Toutes les autres
vues disposent dune
autorisation PUBLIC
select.)

806
Chapitre 6. Vues systme

Vue systme SYSUSERLIST

Nom de la vue Table sous-jacente Remarques

SYSUSERAUTH Table systme SY- Cette vue prsente len-


SUSERPERM la semble des informations
page 788 figurant dans SYSUSE-
RAUTH, lexception
des mots de passe.

Vue systme SYSUSEROPTIONS

Nom de la vue Table sous-jacente Remarques

SYSUSEROPTIONS Vue systme SYSOP- Cette vue prsente les


TIONS la page 800 configurations dop-
tion permanentes qui
sappliquent chaque
utilisateur. Si un utilisa-
teur ne dispose daucune
configuration pour une
option, cette vue af-
fiche la configuration
gnrale (public) pour
loption.

Vue systme SYSUSERPERMS

Nom de la vue Table sous-jacente Remarques

SYSUSERPERMS Table systme SY- Cette vue contient exac-


SUSERPERM la tement les mmes in-
page 788 formations que la table
SYSUSERPERM,
lexception du mot de
passe. Tous les utilisa-
teurs disposent de droits
daccs en lecture sur
cette vue, mais seul le
DBA peut accder la
table sous-jacente (SY-
SUSERPERM).

807
Vue systme SYSVIEWS

Nom de la vue Table sous-jacente Remarques

SYSVIEWS Table systme SYSTA- Cette vue rpertorie


BLE la page 778 les vues, ainsi que leur
Table systme SY- dfinition.
SUSERPERM la
page 788

808
Chapitre 6. Vues systme

Vues compatibles avec Transact-SQL


Adaptive Server Enterprise et Adaptive Server Anywhere ont des catalogues
systme diffrents qui refltent leurs particularits fonctionnelles.
Dans Adaptive Server Enterprise, une base de donnes master contient un
ensemble de tables systme qui renferment les informations relatives toutes
les bases du serveur. Cette base master peut en outre comporter plusieurs
autres bases de donnes possdant chacune ses propres tables systme.
Dans Adaptive Server Anywhere, chaque base de donnes est indpendante
et contient ses propres tables systme. Aucune base master ne contient
dinformations systme sur plusieurs bases de donnes. Chaque serveur est
capable de grer plusieurs bases de donnes la fois, par chargement et
dchargement dynamique selon les besoins.
En outre, les catalogues systme dAdaptive Server Enterprise et dAdaptive
Server Anywhere prsentent des diffrences. Les tables et vues systme
dAdaptive Server Enterprise appartiennent lutilisateur dbo ; elles se
rpartissent entre la base master, la base sybsecurity et chacune des bases de
donnes proprement dites. Les tables et les vues systme dAdaptive Server
Anywhere appartiennent, quant elles, lutilisateur SYS et sont stockes,
de faon distincte, dans chacune des bases.
Pour faciliter la mise en compatibilit dapplications, Adaptive Server
Anywhere fournit un ensemble de vues qui correspondent aux tables et aux
vues systme dAdaptive Server Enterprise. Ces tables et vues appartiennent
lutilisateur spcial dbo. Lorsque les diffrences architecturales sont telles
quune table ou une vue systme dAdaptive Server Enterprise naurait
aucune signification dans Adaptive Server Anywhere, la vue ne contient
aucune donne, lexception du nom et du type des colonnes.
Les tableaux suivants rpertorient les tables systme dAdaptive Server
Enterprise et dcrivent leur mise en oeuvre dans le catalogue systme
dAdaptive Server Anywhere. Dans chaque SGBD, toutes les tables sont la
proprit du dbo.
Tables existant dans
chaque base de donnes
Adaptive Server Nom de la table Description Donnes ?
Enterprise
sysalternates Une ligne pour chaque login associ un Non
utilisateur de la base.

syscolumns Une ligne pour chaque colonne dune table Oui


ou dune vue et pour chaque paramtre
dune procdure.

809
Nom de la table Description Donnes ?

syscomments Une ou plusieurs lignes pour chaque vue, Oui


rgle, valeur par dfaut, trigger et procdure,
indiquant la dfinition de lobjet.
sysconstraints Une ligne pour chaque contrainte (rfren- Non
tielle ou de vrification) associe une table
ou une colonne.

sysdepends Une ligne pour chaque procdure, vue ou Non


table laquelle fait rfrence une procdure,
une vue ou un trigger.

sysindexes Une ligne pour chaque index clusteris ou Oui


non, pour chaque table sans index et une
ligne supplmentaire pour chaque table
contenant une colonne de type texte ou
image.

syskeys Une ligne pour chaque cl primaire, tran- Non


gre ou commune. Cette ligne est dfinie
par lutilisateur et non gre par Adaptive
Server Enterprise.

syslogs Journal de transactions Non


sysobjects Une ligne pour chaque table, vue, procdure, Donnes
rgle, trigger, valeur par dfaut, journal ou compatibles
objet temporaire (pour tempdb uniquement). uniquement

sysprocedures Une ligne pour chaque vue, rgle, valeur par Non
dfaut, trigger ou procdure, indiquant leur
dfinition interne.

sysprotects Informations sur les autorisations des utili- Non


sateurs.

sysreferences Une ligne pour chaque contrainte dintgrit Non


rfrentielle dclare sur une colonne ou sur
une table.

sysroles Associe les rles systme (niveau serveur) Non


des groupes locaux (niveau base de don-
nes).

syssegments Une ligne pour chaque segment (collection Non


nomme de portions despace disque).

810
Chapitre 6. Vues systme

Nom de la table Description Donnes ?

systhresholds Une ligne pour chaque seuil dfini pour la Non


base de donnes.

systypes Une ligne pour chaque type de donnes Oui


systme ou utilisateur.

sysusermes- Une ligne pour chaque message dfini par Oui (table
sages lutilisateur. systme
Adaptive
Server
Anywhere)

sysusers Une ligne pour chaque utilisateur ayant Oui


accs la base.

Tables existant dans la


base de donnes master
dAdaptive Server Nom de la table Description Donnes ?
Enterprise
syscharsets Une ligne pour chaque jeu de caractres ou Non
ordre de tri.

sysconfigures Une ligne pour chaque paramtre de confi- Non


guration dfinissable par lutilisateur.

syscurconfigs Informations relatives aux paramtres de Non


configuration actuellement en vigueur sur
le serveur.

sysdatabases Une ligne pour chaque base de donnes Non


rsidant sur le serveur.

sysdevices Une ligne pour chaque device de sauve- Non


garde de type disque ou bande, et pour
chaque disque ou partition de base de don-
nes.

sysengines Une ligne pour chaque moteur en ligne Non


dfini.

syslanguages Une ligne pour chaque langue (U.S. Engli- Non


sh except) reconnue par le serveur.

syslocks Informations sur les verrous actifs. Non

sysloginroles Une ligne pour chaque login dtenant un Non


rle systme.

811
Nom de la table Description Donnes ?

syslogins Une ligne pour chaque compte utilisateur Oui


valable.

sysmessages Une ligne pour chaque erreur ou avertisse- Non


ment systme.

sysprocesses Informations sur les processus du serveur. Non

sysremotelo- Une ligne pour chaque utilisateur distant. Non


gins

sysservers Une ligne pour chaque serveur distant. Non

syssrvroles Une ligne pour chaque rle applicable Non


lchelle du systme.

sysusages Une ligne pour chaque portion de disque Non


alloue une base de donnes.

Tables existant dans la


base de donnes
sybsecurity dAdaptive Nom de la table Description Don-
Server Enterprise nes ?

sysaudits Une ligne pour chaque enregistrement daudit. Non


sysauditoptions Une ligne pour chaque option daudit globale. Non

812
CHAPITRE 7

Fonctions et procdures systme

Prsentation Ce chapitre prsente les procdures systme stockes, associes aux bases de
donnes Adaptive Server Anywhere. Il traite galement des procdures
systme tendues, notamment de celles lies lenvoi de courrier
lectronique.
Sommaire Sujet : page

Prsentation des procdures systme 814

Procdures stockes systme et catalogue 815

Procdures systme stockes tendues 895


Procdures systme et catalogue Adaptive Server Enterprise 906

813
Prsentation des procdures systme
Adaptive Server Anywhere couvre les types de procdure systme suivants :
Les procdures stockes, qui permettent dafficher des informations
systme sous forme de tableau.

Les procdures stockes tendues associes, entre autres, la fonction de


courrier lectronique.

Les diverses procdures de contrle de comportement du serveur.


Les procdures systme et catalogue Transact-SQL.
Pour consulter la liste des procdures systme, reportez-vous au
document Procdures systme et catalogue Adaptive Server Enterprise
la page 906.
Les fonctions systme mises en oeuvre en tant que procdures stockes.
Pour plus dinformations, reportez-vous la section Fonctions
systme la page 106.
Ce chapitre aborde les trois premiers types de procdures mentionns
ci-avant.

Dfinition des procdures et fonctions systme


Vous trouverez des informations dtailles sur les procdures et fonctions
systme dans Sybase Central :
Pour visualiser les procdures et fonctions systme, cliquez avec le
bouton droit sur une base de donnes connecte et slectionnez Filtrer les
objets par propritaire, puis DBO.
Ouvrez le dossier Procdures et fonctions.

Pour afficher la dfinition dune procdure, slectionnez celle-ci dans le


volet gauche, puis cliquez sur longlet SQL dans le volet droit.

814
Chapitre 7. Fonctions et procdures systme

Procdures stockes systme et catalogue


Les procdures stockes systme et catalogue sont la proprit de
lutilisateur dbo. Certaines de ces procdures sont rserves un usage
systme interne. Vous trouverez dans cette section les procdures qui ne sont
pas destines uniquement un usage systme ou interne. Il est impossible
dappeler des fonctions externes sous Windows CE.

Procdure systme sa_audit_string


Fonction Ajouter une chane dans le journal de transactions.
Syntaxe sa_audit_string ( chane_journal )

Argument chane_journal Chane de caractres ajouter au journal de


transactions.
Remarques Si la fonctionnalit daudit est active, cette procdure systme ajoute un
commentaire dans le journal daudit. La chane doit tre dune longueur
maximale de 200 octets.
Autorisations Les droits DBA sont requis
Effets secondaires Aucun
Voir aussi Option AUDITING [base de donnes] [ASA - Guide dadministration,
page 694]
Audit de lactivit des bases de donnes [SQL Anywhere Studio Scurit,
page 10]

Exemple Lexemple suivant illustre lutilisation de sa_audit_string pour ajouter un


commentaire dans le journal daudit :
CALL sa_audit_string( Auditing test )

Procdure systme sa_check_commit


Fonction Vrifier les violations dintgrit rfrentielle restantes avant un commit.
Syntaxe sa_check_commit ( nom_table_violation, nom_cl_violation )

Arguments nom_table_violation Paramtre varchar(128) contenant le nom dune


table dont une ligne viole lintgrit rfrentielle.
nom_cl_violation Paramtre varchar(128) contenant le nom de
lindex de cl trangre correspondant.
Remarques Si loption de base de donnes WAIT_FOR_COMMIT est active (ON) ou
si une cl trangre est dfinie laide de loption CHECK ON COMMIT

815
dans linstruction CREATE TABLE, vous pouvez mettre jour la base de
donnes en violant lintgrit rfrentielle, du moment que ces violations
sont rsolues avant validation des modifications.
La procdure systme sa_check_commit vous permet de vrifier sil reste
des violations dintgrit rfrentielle avant dessayer de valider vos
modifications.
Les paramtres renvoys indiquent le nom de la table contenant une ligne
qui viole lintgrit rfrentielle, ainsi que le nom de lindex de cl trangre
correspondant.
Autorisations Les droits DBA sont requis.
Effets secondaires Aucun
Voir aussi Option WAIT_FOR_COMMIT [base de donnes] [ASA - Guide
dadministration, page 763]
Instruction CREATE TABLE la page 425
Exemple Le jeu de commandes ci-aprs peut tre excut partir dInteractive SQL.
Elles suppriment les lignes de la table department dans la base de donnes
exemple, mais en violant lintgrit rfrentielle. Lappel
sa_check_commit vrifie quelles tables et quelles cls sont soumises des
violations, puis la modification est annule :
SET TEMPORARY OPTION WAIT_FOR_COMMIT=ON
go
DELETE FROM department
go
CREATE VARIABLE tname VARCHAR( 128 );
CREATE VARIABLE keyname VARCHAR( 128 )
go
CALL sa_check_commit( tname, keyname )
go
SELECT tname, keyname
go
ROLLBACK
go

Procdure systme sa_conn_activity


Fonction Renvoyer la dernire instruction SQL prpare pour chaque connexion aux
bases de donnes du serveur.
Syntaxe sa_conn_activity ( )

Jeux de rsultats

816
Chapitre 7. Fonctions et procdures systme

Nom de colonne Type de donnes Description

Number integer ID de la connexion.

Name varchar(255) Nom de la connexion.

Userid varchar(255) ID utilisateur associ


la connexion.

DBNumber integer ID de la base de don-


nes.

LastReqTime varchar(255) Heure de lancement de


la dernire demande
associe la connexion
spcifie.

LastStatement long varchar Instruction SQL la plus


rcemment prpare
pour la connexion.
Remarques La procdure sa_conn_activity renvoie un jeu de rsultats compos de la
dernire instruction SQL prpare pour chaque connexion sil a t demand
au serveur de collecter ces informations. Lenregistrement dinstructions doit
tre activ sur le serveur de base de donnes avant dappeler
sa_conn_activity. Il convient pour cela de spcifier loption -zl au dmarrage
du serveur de base de donnes ou dexcuter linstruction suivante :
CALL sa_server_option(RememberLastStatement,ON)

Elle est particulirement utile lorsque le serveur de base de donnes est


occup et que vous souhaitez obtenir des informations sur linstruction SQL
prpare pour chaque connexion. Cette fonctionnalit peut tre utilise en
remplacement de la consignation des informations sur les demandes.
Pour plus dinformations sur la proprit LastStatement dont ces valeurs
sont issues, reportez-vous la section Proprits de niveau connexion [ASA
- Guide dadministration, page 775].

Autorisations Aucune
Effets secondaires Aucun
Voir aussi Option de serveur -zl [ASA - Guide dadministration, page 186]
Procdure systme sa_server_option la page 872

Procdure systme sa_conn_compression_info


Fonction Regrouper les taux de compactage.

817
Syntaxe sa_conn_compression_info ( [ id_connexion ] )

Argument id_connexion Paramtre entier facultatif spcifiant lID dune


connexion.
Jeux de rsultats

Nom de colonne Type de donnes Description

Type varchar(20) Chane indiquant


si les statistiques
de compactage qui
suivent reprsentent
une seule connexion
(Connection) ou la to-
talit des connexions au
serveur (Server).

ConnNumber integer Entier reprsentant un


ID de connexion. Ren-
voie la valeur NULL si
le type est Server.

Compression varchar(10) Chane indiquant si


le compactage est ac-
tiv ou non pour la
connexion. Renvoie la
valeur NULL si le type
est Server ou ON/OFF
si le type est Connec-
tion.

TotalBytes integer Entier reprsentant le


nombre total doctets
rellement envoys et
reus.

TotalBytesUnComp integer Entier reprsentant le


nombre doctets qui
auraient t envoys et
reus si le compactage
avait t dsactiv.

818
Chapitre 7. Fonctions et procdures systme

Nom de colonne Type de donnes Description

CompRate numeric(5,2) Valeur numrique (5,2)


correspondant au taux
de compactage global.
Par exemple, la valeur 0
indique labsence de
compactage. La va-
leur 75 signifie que les
donnes ont t com-
pactes 75 %, soit
un quart de leur taille
initiale.

CompRateSent numeric(5,2) Valeur numrique (5,2)


reprsentant le taux de
compactage des donnes
adresses au client.

CompRateReceived numeric(5,2) Valeur numrique (5,2)


reprsentant le taux de
compactage des donnes
reues du client.

TotalPackets integer Entier indiquant le


nombre total de paquets
rellement envoys et
reus.

TotalPacketsUnComp integer Entier reprsentant le


nombre total de paquets
qui auraient t envoys
et reus si le compactage
avait t dsactiv.

CompPktRate numeric(5,2) Valeur numrique (5,2)


correspondant au taux
de compactage global
des paquets.

CompPktRateSent numeric(5,2) Valeur numrique (5,2)


reprsentant le taux de
compactage des paquets
adresss au client.

819
Nom de colonne Type de donnes Description

CompPktRateRecei- numeric(5,2) Valeur numrique (5,2)


ved reprsentant le taux de
compactage des paquets
reus du client.

Remarques Si vous spcifiez un ID de connexion, la procdure


sa_conn_compression_info renvoie un jeu de rsultats compos des
proprits de compactage lies la connexion indique. En labsence
did_connexion, cette procdure systme renvoie les informations relatives
toutes les connexions courantes aux bases de donnes du serveur.
Pour plus dinformations sur les proprits dont ces valeurs sont issues,
reportez-vous la section Proprits de niveau connexion [ASA - Guide
dadministration, page 775].

Autorisations Aucune
Effets secondaires Aucun
Exemple Lexemple suivant illustre lutilisation de la procdure stocke
sa_conn_compression_info pour renvoyer un jeu de rsultats rcapitulant les
proprits de compactage pour toutes les connexions au serveur :
CALL sa_conn_compression_info()

Type ConnNumber Compression TotalBytes ...

Connection 79 Off 7841 ...

Server (NULL) (NULL) 2737761 ...

... ... ... ... ...

Procdure systme sa_conn_info


Fonction Gnrer un rapport sur les informations de proprit.
Syntaxe sa_conn_info ( [ id_connexion ] )

Argument id_connexion Paramtre entier facultatif spcifiant lID dune


connexion.
Jeux de rsultats

820
Chapitre 7. Fonctions et procdures systme

Nom de colonne Type de donnes Description

Number integer ID de la connexion.

Name varchar(255) Nom de la connexion


courante.

Userid varchar(255) ID utilisateur associ


la connexion.

DBNumber integer ID de la base de don-


nes.

LastReqTime varchar(255) Heure de lancement de


la dernire demande
associe la connexion
spcifie.
ReqType varchar(255) Chane correspondant
au type de la dernire
demande.

CommLink varchar(255) Lien de communication


de la connexion. Il sagit
de lun des protocoles
rseau pris en charge par
Adaptive Server Anyw-
here ou de la valeur lo-
cal pour une connexion
entre homologues.

NodeAddr varchar(255) Noeud associ au client


dans une connexion
client/serveur.

LastIdle integer Nombre dimpulsions


entre des demandes.

BlockedOn integer Valeur 0 si la connexion


courante nest pas blo-
que. Sinon, numro
de la connexion qui est
lorigine du blocage
d un conflit de ver-
rouillage.

821
Nom de colonne Type de donnes Description

LockName unsigned bigint Valeur unsigned integer


64 bits reprsentant le
verrou attendu par une
connexion.

UncmtOps integer Nombre doprations


non valides.

Remarques Si vous spcifiez un ID de connexion, la procdure


sa_conn_compression_info renvoie un jeu de rsultats compos des
proprits de la connexion indique. En labsence did_connexion, cette
procdure systme renvoie les informations relatives toutes les connexions
courantes aux bases de donnes du serveur.
Dans une situation bloque, la valeur BlockedOn renvoye par cette
procdure vous permet de vrifier lidentit des utilisateurs bloqus, ainsi
que lendroit du blocage. La procdure sa_locks peut tre utilise pour
afficher les verrous retenus par la connexion de blocage ; si une connexion
maintient des verrous sur plusieurs tables, vous pouvez faire correspondre la
valeur de LockName une valeur comprise entre sa_locks et sa_conn_info.
Pour plus dinformations sur ces proprits, reportez-vous la section
Proprits de niveau connexion [ASA - Guide dadministration, page 775].
Autorisations Aucune
Effets secondaires Aucun
Exemple Lexemple suivant utilise la procdure stocke sa_conn_info pour renvoyer
un jeu de rsultats rcapitulant les proprits de connexion pour toutes les
connexions au serveur :
CALL sa_conn_info()

Number Name Userid DBNumber ...

79 DBA 0 ...
46 Sybase Central 1 DBA 0 ...

... ... ... ... ...

822
Chapitre 7. Fonctions et procdures systme

Procdure systme sa_conn_properties


Fonction Gnrer un rapport sur les informations de proprit.
Syntaxe sa_conn_properties ( [ id_connexion ] )

Argument id_connexion Paramtre entier facultatif spcifiant lID dune


connexion.
Jeux de rsultats

Nom de colonne Type de donnes Description

Number integer ID de la connexion.

PropNum integer Numro de proprit de


la connexion.

PropName varchar(255) Nom de proprit de la


connexion.

PropDescription varchar(255) Description des propri-


ts de connexion.

Value long varchar Valeur de proprit de la


connexion.
Remarques Renvoie lID de connexion sous forme de numro (Number), ainsi que les
lments PropNum, PropName, PropDescription et Value pour chaque
proprit de connexion disponible.
En labsence did_connexion, les proprits de toutes les connexions la
base de donnes courante sont renvoyes.
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Procdure systme sa_conn_properties_by_conn la page 824
Procdure systme sa_conn_properties_by_name la page 825
Fonctions systme la page 106
Proprits de niveau connexion [ASA - Guide dadministration, page 775]
Exemple Lexemple suivant utilise la procdure stocke sa_conn_properties pour
renvoyer un jeu de rsultats rcapitulant les proprits de connexion pour
toutes les connexions :
CALL sa_conn_properties()

823
Number PropNum PropName ...

79 37 CacheHits ...

79 38 CacheRead ...

... ... ... ...

Procdure systme sa_conn_properties_by_conn


Fonction Gnrer un rapport sur les informations de proprit.
Syntaxe sa_conn_properties_by_conn ( [ nom_proprit ] )

Argument nom_proprit Paramtre varchar(255) facultatif spcifiant un nom


de proprit de connexion.
Jeux de rsultats

Nom de colonne Type de donnes Description

Number integer ID de la connexion.

PropNum integer Numro de proprit de


la connexion.

PropName varchar(255) Nom de proprit de la


connexion.
PropDescription varchar(255) Description des propri-
ts de connexion.
Value long varchar Valeur de proprit de la
connexion.
Remarques Il sagit dune variante de la procdure systme sa_conn_properties, qui
renvoie les mmes colonnes de rsultats. Cette procdure renvoie
uniquement les proprits de connexion correspondant la chane
nom_proprit. Vous pouvez utiliser des caractres joker dans la chane
nom_proprit, puisque la comparaison utilise un oprateur LIKE. Le jeu de
rsultats est tri par numro de connexion et par nom de proprit.
Pour une liste complte des proprits de connexion, reportez-vous la
section Proprits de niveau connexion [ASA - Guide dadministration,
page 775].
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Procdure systme sa_conn_properties la page 823

824
Chapitre 7. Fonctions et procdures systme

Proprits de niveau connexion [ASA - Guide dadministration, page 775]


Exemples Linstruction suivante renvoie loption AnsiNull pour toutes les connexions :
CALL sa_conn_properties_by_conn( ansinull )

Linstruction suivante renvoie les valeurs doption lies la norme ANSI


pour toutes les connexions :
CALL sa_conn_properties_by_conn( ansi% )

Notez que le mme rsultat peut tre obtenu en utilisant :


SELECT *
FROM sa_conn_properties()
WHERE propname LIKE ansi%
ORDER BY number, propname

Procdure systme sa_conn_properties_by_name


Fonction Gnrer un rapport sur les informations de proprit.
Syntaxe sa_conn_properties_by_name ( [ id_connexion ] )

Argument id_connexion Paramtre varchar(255) facultatif spcifiant le numro


dID dune connexion.
Jeux de rsultats

Nom de colonne Type de donnes Description

Number integer ID de la connexion.


PropNum integer Numro de proprit de
la connexion.
PropName varchar(255) Nom de proprit de la
connexion.
PropDescription varchar(255) Description des propri-
ts de connexion.

Value long varchar Valeur de proprit de la


connexion.
Remarques Il sagit dune variante de la procdure systme sa_conn_properties, qui
renvoie les mmes colonnes de rsultats. Cependant, pour
sa_conn_properties_by_name, les informations sont classes par nom de
proprit et numro de connexion.
Pour consulter la liste des proprits de connexion disponibles,
reportez-vous la section Fonctions systme la page 106.

825
Notez que le mme rsultat peut tre obtenu en utilisant :
SELECT *
FROM sa_conn_properties()
ORDER BY propname, number

Autorisations Aucune
Effets secondaires Aucun
Voir aussi Procdure systme sa_conn_properties la page 823
Proprits de niveau connexion [ASA - Guide dadministration, page 775]
Exemple Lexemple suivant utilise la procdure stocke sa_conn_properties_by_name
pour renvoyer un jeu de rsultats rcapitulant les informations de proprits
de connexion classes par nom de proprit et numro de connexion :
CALL sa_conn_properties_by_name()

Number PropNum PropName ...

46 279 Allow_nulls_- ...


by_default

50 279 Allow_nulls_- ...


by_default

... ... ... ...

Procdure systme sa_db_info


Fonction Gnrer un rapport sur les proprits de la base de donnes.
Syntaxe sa_db_info ( [ id_base_de_donnes ] )

Argument id_base_de_donnes Paramtre entier facultatif spcifiant lID dune


base de donnes.
Jeux de rsultats

826
Chapitre 7. Fonctions et procdures systme

Nom de colonne Type de donnes Description

Number integer ID de la connexion.

Alias varchar(255) Nom de la base de don-


nes.

File varchar(255) Nom du fichier racine


de la base de donnes
(incluant le chemin).

ConnCount integer Nombre de connexions


la base de donnes.

PageSize integer Taille de page de la base


de donnes, exprime en
octets.
LogName varchar(255) Nom du journal de tran-
sactions (incluant le
chemin).
Remarques Si vous spcifiez un ID de base de donnes, sa_db_info renvoie une ligne
unique contenant les proprits Number, Alias, File, ConnCount, PageSize
et LogName de la base de donnes spcifie.
En labsence did_base_de_donnes, les proprits de toutes les bases de
donnes sont renvoyes.
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Procdure systme sa_db_properties la page 828
Proprits de niveau base de donnes [ASA - Guide dadministration,
page 796]

Exemple Linstruction suivante renvoie une ligne pour chaque base de donnes
excute sur le serveur :
CALL sa_db_info()

827
Property Value

Number 0

Alias asademo

File C:\Program
Files\Sybase\SQL Anywhere
9\asademo.db

ConnCount 1

PageSize 2048

LogName C:\Program
Files\Sybase\SQL Anywhere
9\asademo.log

Procdure systme sa_db_properties


Fonction Gnrer un rapport sur les proprits de la base de donnes.
Syntaxe sa_db_properties ( [ id_base_de_donnes ] )

Argument id_base_de_donnes Paramtre entier facultatif spcifiant lID dune


base de donnes.
Jeux de rsultats

Nom de colonne Type de donnes Description

Number integer ID de la base de don-


nes.

PropNum integer Numro de proprit de


la base de donnes.

PropName varchar(255) Nom de proprit de la


base de donnes.

PropDescription varchar(255) Description des pro-


prits de la base de
donnes.

Value long varchar Valeur de proprit de la


base de donnes.
Remarques Si vous spcifiez un ID de base de donnes, sa_db_properties renvoie lID de
la base de donnes, ainsi que les lments PropNum, PropName,
PropDescription et Value pour chaque proprit de base de donnes
disponible.

828
Chapitre 7. Fonctions et procdures systme

En labsence did_base_de_donnes, les proprits de toutes les bases de


donnes sont renvoyes.
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Procdure systme sa_db_info la page 826
Proprits de niveau base de donnes [ASA - Guide dadministration,
page 796]

Exemple Lexemple suivant utilise la procdure stocke sa_db_properties() pour


renvoyer un jeu de rsultats rcapitulant les proprits de toutes les bases de
donnes :
CALL sa_db_properties()

Number PropNum PropName ...

0 0 ConnCount ...
0 1 IdleCheck ...

0 2 IdleWrite ...

... ... ... ...

sa_disable_auditing_type
Fonction Dsactiver laudit dvnements spcifiques.
Syntaxe sa_disable_auditing_type ( chane )

Argument chane Ce paramtre varchar(128) est une chane compose dau


moins un des lments suivants (spars par des virgules) :
all dsactive tous les types daudit.
connect dsactive laudit des tentatives de connexion qui ont russi ou
chou.
connectFailed dsactive laudit des tentatives de connexion qui ont
chou.
DDL dsactive laudit des instructions DDL.
options dsactive laudit des options publiques.
permission dsactive laudit des vrifications dautorisation, des
vrifications dutilisateur et des instructions SETUSER.
permissionDenied dsactive laudit des vrifications dautorisation et
dutilisateur qui ont chou.

829
triggers dsactive laudit en rponse des vnements de trigger.
Remarques Vous pouvez utiliser la procdure systme sa_disable_auditing_type pour
dsactiver laudit dune ou de plusieurs catgories dinformations.
La rglage de cette option sur all dsactive tout audit. Vous pouvez
galement dsactiver laudit en dfinissant loption PUBLIC.AUDITING
OFF.
Autorisations Les droits DBA sont requis
Effets secondaires Aucun
Voir aussi Audit de lactivit des bases de donnes [SQL Anywhere Studio Scurit,
page 10]
Option AUDITING [base de donnes] [ASA - Guide dadministration,
page 694]

Exemple Pour dsactiver tout audit :


CALL sa_disable_auditing_type(all)

Procdure systme sa_disk_free_space


Fonction Gnrer un rapport sur lespace disponible pour un dbspace, un journal de
transactions, un miroir de journal de transactions et/ou un fichier temporaire.
Syntaxe sa_disk_free_space ( [ chane ] )

Argument chane Ce paramtre de chane peut tre nom_dbspace, log, mirror ou


temp.
Sil existe un dbspace appel log, mirror ou temp, vous pouvez ajouter un
tiret bas comme prfixe du mot-cl. Par exemple, utilisez _log pour
obtenir des informations sur le journal de transactions lorsquun dbspace
existant sintitule log.
Jeux de rsultats

Nom de colonne Type de donnes Description

dbspace_name varchar(128) Nom de dbspace, jour-


nal de transactions,
journal en miroir ou
fichier temporaire.

free_space unsigned bigint Nombre doctets libres


sur le volume.
Remarques Si le paramtre chane nest pas spcifi ou sil est de valeur NULL, le jeu
de rsultats renvoie une ligne par dbspace, plus une ligne par journal de

830
Chapitre 7. Fonctions et procdures systme

transactions, miroir de journal de transactions et fichier temporaire existant.


Si le paramtre chane est spcifi, une ligne sera renvoye ou aucune ne le
sera (aucune en labsence de dbspace ou bien si log ou mirror est spcifi
alors quil ny a aucun journal ou fichier miroir).
Autorisations Les droits DBA sont requis
Effets secondaires Aucun
Exemple Lexemple suivant utilise la procdure stocke sa_disk_free_space pour
renvoyer un jeu de rsultats contenant des informations sur lespace
disponible :
CALL sa_disk_free_space()

dbspace_name free_space

SYSTEM 10952101888

Transaction Log 10952101888


Temporary File 10952101888

sa_enable_auditing_type
Fonction Activer laudit et indique les vnements auditer.
Syntaxe sa_enable_auditing_type ( chane )

Argument chane Ce paramtre varchar(128) est une chane compose dau


moins un des lments suivants (spars par des virgules) :
all active tous les types daudit.
connect active laudit des tentatives de connexion qui ont russi ou
chou.
connectFailed active laudit des tentatives de connexion qui ont
chou.
DDL active laudit des instructions DDL.
options active laudit des options publiques.
permission active laudit des vrifications dautorisation, des
vrifications dutilisateur et des instructions setuser.
permissionDenied active laudit des vrifications dautorisation et
dutilisateur qui ont chou.
triggers active laudit aprs un vnement de trigger.
Remarques sa_enable_auditing_type fonctionne avec loption PUBLIC.AUDITING
pour activer laudit de types particuliers dinformations.

831
Si vous attribuez la valeur ON loption PUBLIC.AUDITING sans prciser
le type dinformations auditer, le paramtre par dfaut (all) prend effet.
Dans ce cas, tous les types dinformations daudit sont enregistrs.
Si vous attribuez la valeur ON loption PUBLIC.AUDITING en
dsactivant tous les types daudit par le biais de sa_disable_auditing_type,
aucune information daudit nest enregistre. Pour rtablir laudit, vous
devez utiliser sa_enable_auditing_type afin de prciser le type
dinformations auditer.
Si vous attribuez la valeur OFF loption PUBLIC.AUDITING, aucune
information daudit nest enregistre, quelle que soit la valeur de loption
sa_enable_auditing_type.
Autorisations Les droits DBA sont requis
Effets secondaires Aucun
Voir aussi Audit de lactivit des bases de donnes [SQL Anywhere Studio Scurit,
page 10]
Option AUDITING [base de donnes] [ASA - Guide dadministration,
page 694]

Exemple Pour activer seulement laudit des options :


CALL sa_disable_auditing_type(all)

CALL sa_enable_auditing_type(options)

Procdure systme sa_eng_properties


Fonction Gnrer un rapport sur les proprits du serveur de base de donnes.
Syntaxe sa_eng_properties ( )

Jeux de rsultats

832
Chapitre 7. Fonctions et procdures systme

Nom de colonne Type de donnes Description

PropNum integer Numro de proprit


du serveur de base de
donnes.
PropName varchar(255) Nom de proprit du
serveur de base de don-
nes.

PropDescription varchar(255) Description des propri-


ts du serveur de base
de donnes.

Value long varchar Valeur de proprit du


serveur de base de don-
nes.
Remarques Renvoie les lments PropNum, PropName, PropDescription et Value pour
chaque proprit serveur disponible.
Pour obtenir la liste des proprits de serveur de base de donnes
disponibles, reportez-vous la section Fonctions systme la page 106.
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Proprits de niveau serveur [ASA - Guide dadministration, page 788]
Exemple Linstruction suivante renvoie un ensemble de proprits serveur
disponibles :
CALL sa_eng_properties()

PropNum PropName ...

1 IdleWrite ...

2 IdleChkPt ...

... ... ...

Procdure systme sa_flush_cache


Fonction Vider toutes les pages de la base de donnes courante dans le cache du
serveur de base de donnes.
Syntaxe sa_flush_cache ( )

833
Remarques Cette procdure permet aux administrateurs de base de donnes de vider le
cache du serveur de la base de donnes courante. Dans les mesures de
performances, cette procdure permet dobtenir des rsultats rptables.
Autorisations Les droits DBA sont requis
Effets secondaires Aucun

Procdure systme sa_flush_statistics


Fonction Enregistrer dans le serveur de base de donnes toutes les statistiques du
modle destimation des cots.
Syntaxe sa_flush_statistics ( )

Remarques Les administrateurs de base de donnes peuvent faire appel cette procdure
pour sassurer que les statistiques du modle destimation des cots cres
et/ou runies dans le cache du serveur de base de donnes, mais qui nont
pas encore t enregistres sur le disque, sont vides avec effet immdiat. En
mode dexploitation normal, il nest pas ncessaire dexcuter cette
procdure car le serveur crit automatiquement des statistiques sur le disque
sur une base priodique.
Autorisations Les droits DBA sont requis
Effets secondaires Aucun

Procdure systme sa_get_dtt


Fonction Gnrer un rapport sur la valeur courante du modle DTT (Disk Transfer
Time), qui fait partie du modle destimation des cots.
Syntaxe sa_get_dtt ( id_fichier )

Argument id_fichier Paramtre unsigned smallint spcifiant lID de fichier de


base de donnes.
Remarques Vous pouvez obtenir lid_fichier de la table systme SYSFILE.
Cette procdure, conue pour des diagnostics internes, extrait des donnes
de la table systme SYSOPTSTAT.
Jeux de rsultats

834
Chapitre 7. Fonctions et procdures systme

Nom de colonne Type de donnes Description

BandSize unsigned integer Taille, en pages, du


disque associ laccs
alatoire.
ReadTime unsigned integer Cot amorti, en millise-
condes, de lecture dune
page.

WriteTime unsigned integer Cot amorti, en millise-


condes, dcriture dune
page.
Autorisations Les droits DBA sont requis.
Effets secondaires Aucun
Voir aussi Table systme SYSFILE la page 735
Table systme SYSOPTSTAT la page 759

Procdure systme sa_get_histogram


Fonction Extraire lhistogramme correspondant une colonne.
Syntaxe sa_get_histogram (
colonne,
table
[, propritaire ]
)

Arguments colonne Paramtre char(128) spcifiant la colonne.


table Paramtre char(128) spcifiant la table.

propritaire Paramtre char(128) facultatif spcifiant le propritaire.


Jeux de rsultats

835
Nom de colonne Type de donnes Description

StepNumber smallint Numro de comparti-


ment de lhistogramme.
La frquence du premier
compartiment (Step-
Number = 0) indique la
slectivit des valeurs
NULL.

Low char(128) Valeur de colonne (in-


clusive) infrieure du
compartiment.
High char(128) Valeur de colonne (ex-
clusive) suprieure du
compartiment.

Frequency double Slectivit des valeurs


dans le compartiment.
Remarques Cette procdure, conue pour des diagnostics internes, extrait des
statistiques de colonne de la table systme SYSOPTSTAT.
Un compartiment singleton se caractrise par une valeur Low gale la
valeur High correspondante, dans le jeu de rsultats.
Pour plus dinformations sur les histogrammes, ainsi que sur lexcution
et loptimisation des requtes dans Adaptive Server Anywhere,
reportez-vous la section Histogrammes et estimations de loptimiseur
[ASA - Guide de lutilisateur SQL, page 429].

Il est conseill de visualiser les histogrammes au moyen de lutilitaire


dhistogramme.
Pour plus dinformations sur lutilitaire dhistogramme, reportez-vous
la section Utilitaire dhistogramme [ASA - Guide dadministration, page 573].
Pour dterminer la slectivit dun prdicat sur une colonne de type chane,
utilisez la fonction ESTIMATE ou ESTIMATE_SOURCE. Pour les
colonnes de type chane, la procdure sa_get_histogram et lutilitaire
dhistogramme nextraient aucune donne de la table SYSCOLSTAT. Tout
tentative dextraction de donnes de type chane gnre une erreur.
Autorisations Autorisation SELECT requise
Effets secondaires Aucun
Voir aussi Utilitaire dhistogramme [ASA - Guide dadministration, page 573]

836
Chapitre 7. Fonctions et procdures systme

Histogrammes et estimations de loptimiseur [ASA - Guide de lutilisateur


SQL, page 429]
ESTIMATE (fonction diverse) la page 151
ESTIMATE_SOURCE (fonction diverse) la page 152
Table systme SYSCOLSTAT la page 723

Procdure systme sa_get_request_profile


Fonction Analyser le journal des demandes pour dterminer le temps dexcution
dinstructions similaires.
Syntaxe sa_get_request_profile (
[ nom_fichier
[, id_conn
[, premier_fichier
[, nbre_fichiers ] ]
)

Arguments nom_fichier Paramtre long varchar facultatif spcifiant le fichier de


consignation des informations sur les demandes.
id_conn Paramtre unsigned integer facultatif spcifiant lID dune
connexion.
premier_fichier Paramtre entier facultatif spcifiant le premier
journal des demandes analyser.

nbre_fichiers Paramtre entier facultatif spcifiant le nombre de


journaux de demandes analyser.
Remarques Cette procdure appelle sa_get_request_times pour traiter un journal de
demandes, puis en rcapituler les rsultats dans la table temporaire globale
satmp_request_profile. Cette table contient les instructions du journal, le
nombre dexcutions de chacune, ainsi que leurs temps dexcution total,
moyen et maximal. Elle peut tre trie de plusieurs faons pour identifier les
cibles des efforts doptimisation des performances.
Si vous nindiquez pas de journal de transactions, cest le journal de
transactions courant spcifi linvite de commandes avec loption -zo qui
est utilis par dfaut, ou celui indiqu par
sa_server_option( RequestLogFile, filename )

Si vous fournissez un ID de connexion, il est utilis pour filtrer les


informations du journal afin que seules les demandes correspondant cette
connexion soient extraites.
Autorisations Les droits DBA sont requis

837
Effets secondaires Commit automatique
Exemple La commande suivante obtient le temps dexcution des demandes des
fichiers req.out.3, req.out.4 et req.out.5 :
CALL sa_get_request_profile(req.out,0,3,3)

Voir aussi Procdure systme sa_get_request_times la page 838


Procdure systme sa_statement_text la page 879
Procdure systme sa_server_option la page 872

Procdure systme sa_get_request_times


Fonction Analyser le journal des demandes pour dterminer le temps dexcution des
instructions.
Syntaxe sa_get_request_times (
nom_fichier
[, id_conn
[, premier_fichier
[, nbre_fichiers ] ]
)

Arguments nom_fichier Paramtre LONG VARCHAR facultatif spcifiant le


fichier de consignation des informations sur les demandes.

id_conn Paramtre UNSIGNED INTEGER facultatif spcifiant lID


dune connexion.

premier_fichier Paramtre INTEGER facultatif spcifiant le premier


fichier analyser.
nbre_fichiers Paramtre INTEGER facultatif spcifiant le nombre de
journaux des demandes analyser.

Remarques Cette procdure lit le journal des demandes dsign et remplit la table
temporaire globale satmp_request_time avec les instructions du journal et
leur temps dexcution.
Pour les instructions concernant des insertions et des mises jour, le temps
dexcution est facile dterminer. Pour les requtes, ce temps est calcul de
la prparation de linstruction jusqu sa suppression, et comprend la
description de linstruction, louverture dun curseur, lextraction des lignes
et la fermeture du curseur. Pour la plupart des requtes, il sagit dune
valuation prcise du temps ncessaire. En revanche, si le curseur reste
ouvert alors que dautres actions sont excutes, le temps dexcution parat
long et signifie tort que la requte est coteuse.

838
Chapitre 7. Fonctions et procdures systme

Cette procdure reconnat les variables htes du journal des demandes et


remplit la table temporaire globale satmp_request_hostvar avec leurs
valeurs. Pour les anciennes bases de donnes dans lesquelles cette table
temporaire nexiste pas, les valeurs des variables htes sont ignores.
Si vous nindiquez pas de journal de transactions, cest le journal de
transactions courant spcifi linvite de commandes avec loption -zo qui
est utilis par dfaut, ou celui indiqu par
sa_server_option( RequestLogFile, filename )

Si vous fournissez un ID de connexion, il est utilis pour filtrer les


informations du journal afin que seules les demandes correspondant cette
connexion soient extraites.
Autorisations Les droits DBA sont requis
Effets secondaires Commit automatique
Exemple La commande suivante obtient le temps dexcution des demandes des
fichiers req.out.3, req.out.4 et req.out.5 :
CALL sa_get_request_times(req.out,0,3,3)

Voir aussi Procdure systme sa_get_request_profile la page 837


Procdure systme sa_statement_text la page 879
Procdure systme sa_server_option la page 872

Procdure systme sa_get_server_messages


Fonction Renvoyer des constantes partir de la fentre des messages du serveur sous
la forme dun jeu de rsultats.
Syntaxe sa_get_server_messages ( entier )

Arguments entier Paramtre entier indiquant le numro de la ligne partir de


laquelle laffichage des messages du serveur doit commencer.

Jeux de rsultats

Nom de colonne Type de donnes Description

line_num integer Numro de ligne dun


message de serveur.

message_text varchar(255) Texte du message du


serveur.

message_time timestamp Heure du message.


Remarques Cette procdure prend un paramtre entier qui spcifie le numro de la ligne

839
de dpart afficher et renvoie une ligne pour celle-ci et pour toutes les lignes
suivantes. Si la ligne de dpart est ngative, le jeu de rsultats dmarre la
premire ligne disponible. Le jeu de rsultats inclut le numro de ligne, le
texte du message et lheure du message.
Autorisations Aucune
Effets secondaires Aucun
Exemple Lexemple suivant utilise la procdure stocke sa_get_server_messages pour
renvoyer un jeu de rsultats comprenant le contenu de la fentre des
messages du serveur partir de la ligne 16 :
CALL sa_get_server_messages(16)

num_ligne texte_message ...

16 Running on Windows ...


2000 Build 2195...

17 2132K of memory used ...


for caching

... ... ...

Procdure systme sa_http_header_info


Fonction Renvoyer les noms et valeurs des en-ttes HTTP.
Syntaxe sa_http_header_info ( [param_en_tte] )

Argument param_en_tte Paramtre varchar(255) facultatif spcifiant un nom


den-tte HTTP.

Jeux de rsultats

Nom de colonne Type de donnes Description

Name varchar(255) Nom den-tte HTTP.


Value long varchar Valeur den-tte HTTP.
Remarques La procdure stocke sa_http_header_info renvoie les noms et valeurs
den-ttes. Si vous ne spcifiez pas de nom den-tte au moyen du paramtre
facultatif, le jeu de rsultats contient des valeurs pour tous les en-ttes.
Cette procdure renvoie un jeu de rsultats non vide si elle est appele
pendant le traitement dune demande HTTP au sein dun service Web.
Autorisations Aucune

840
Chapitre 7. Fonctions et procdures systme

Effets secondaires Aucun


Voir aussi Utilisation des services Web [ASA - Guide dadministration, page 251]
Procdure systme sa_http_variable_info la page 841

Procdure systme sa_http_variable_info


Fonction Renvoyer les noms et valeurs des variables HTTP.
Syntaxe sa_http_variable_info ( [param_variable] )

Argument param_variable Paramtre varchar(255) facultatif spcifiant un nom


de variable HTTP.
Jeux de rsultats

Nom de colonne Type de donnes Description

Name varchar(255) Nom de la variable


HTTP.

Value long varchar Valeur de la variable


HTTP.
Remarques La procdure stocke sa_http_variable_info renvoie les noms et valeurs de
variables. Si vous ne spcifiez pas de nom de variable avec le paramtre
facultatif, le jeu de rsultats renvoie les valeurs de toutes les variables.
Cette procdure renvoie un jeu de rsultats non vide si elle est appele
pendant le traitement dune demande HTTP au sein dun service Web.
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Utilisation des services Web [ASA - Guide dadministration, page 251]
Procdure systme sa_http_header_info la page 840

Procdure systme sa_index_density


Fonction Gnrer un rapport sur le niveau de fragmentation des index de base de
donnes.
Syntaxe sa_index_density (
[ nom_table
[, nom_propritaire ] ]
)

Arguments nom_table Paramtre char(128) facultatif spcifiant le nom de la table.

841
nom_propritaire Paramtre char(128) facultatif spcifiant le nom du
propritaire.

Jeux de rsultats

Nom de colonne Type de don- Description


nes

TableName char(128) Nom dune table.

TableId unsigned integer ID de la table.


IndexName char(128) Nom dun index.

IndexId unsigned integer ID de lindex. Cette colonne


contient lune des valeurs sui-
0 : pour les cls primaires
vantes
SYSFOREIGNKEY.id_-
cl_trangre pour les
cls trangres
SYSINDEX.id_index
pour tous les autres index

IndexType char(4) Le type dindex. Cette colonne


contient lune des valeurs sui-
PKEY
vantes : pour les cls pri-
maires
FKEY pour les cls tran-
gres
UI pour les index uniques
UC pour les contrainte
uniques
NUI pour les index non
uniques

LeafPages unsigned integer Nombre de pages de niveau


feuille.
Density numeric(8,6) Fraction entre 0 et 1 fournis-
sant une indication du remplis-
sage de chaque page dindex (en
moyenne).

Remarques Cette procdure permet aux administrateurs de base de donnes dobtenir

842
Chapitre 7. Fonctions et procdures systme

des informations sur le degr de fragmentation des index dune base de


donnes.
La procdure renvoie un jeu de rsultats contenant le nom et lID de la table,
le nom, lID, le type et la densit de lindex, ainsi que le nombre de pages de
niveau feuille.
Si vous ne spcifiez aucun paramtre, les informations concernant toutes les
tables saffichent. Dans le cas contraire, la procdure examine uniquement la
table nomme.
Pour les index contenant un grand nombre de pages de niveau feuille, des
valeurs de densit leves sont souhaitables.
Autorisations Les droits DBA sont requis
Effets secondaires Aucun
Voir aussi Fragmentation des index [ASA - Guide de lutilisateur SQL, page 218]
Exemple Lexemple suivant illustre lutilisation de la procdure stocke
sa_index_density pour renvoyer un jeu de rsultats rcapitulant le niveau de
fragmentation des index de base de donnes :
CALL sa_index_density()

TableName TableId IndexName ... Density

Products 436 Products ... 0.012451

... ... ... ... ...

Procdure systme sa_index_levels


Fonction Contribuer loptimisation des performances en gnrant un rapport sur le
nombre de niveaux dun index.
Syntaxe sa_index_levels ( [ nom_table [, nom_propritaire ] ] )

Arguments nom_table Paramtre char(128) facultatif spcifiant le nom de la table.


nom_propritaire Paramtre char(128) facultatif spcifiant le nom du
propritaire.
Jeux de rsultats

843
Nom de colonne Type de don- Description
nes

TableName char(128) Nom dune table.

TableId unsigned integer ID de la table.

IndexName char(128) Nom dun index.

IndexId unsigned integer ID de lindex. Cette colonne


contient lune des valeurs sui-
vantes :

0 pour les cls primaires


SYSFOREIGNKEY.id_-
cl_trangre pour les
cls trangres
SYSINDEX.id_index
pour tous les autres index

IndexType char(4) Le type dindex. Cette colonne


contient lune des valeurs sui-
PKEY
vantes : pour les cls pri-
maires
FKEY pour les cls
trangres
UI pour les index uniques
UC pour les contrainte
uniques
NUI pour les index non
uniques

Levels integer Nombre de niveaux de lindex.

Remarques Le nombre de niveaux dune arborescence dindex dtermine le nombre


doprations dE/S ncessaires pour accder une ligne laide de lindex.
Les index comportant un petit nombre de niveaux sont plus efficaces que
ceux qui en contiennent un grand nombre.
La procdure renvoie un jeu de rsultats contenant le nom et lID de la table
dune part, et le nom, lID, le type, la densit et le nombre de niveaux de
lindex dautre part.
En labsence de spcification darguments, les niveaux sont indiqus pour

844
Chapitre 7. Fonctions et procdures systme

tous les index de la base de donnes. Si seul le nom_table est spcifi, les
niveaux de tous les index de cette table sont indiqus. Si nom_table est
dfini NULL et quun nom_propritaire est indiqu, seuls les niveaux
dindex des tables appartenant cet utilisateur sont renvoys.
Autorisations Les droits DBA sont requis
Effets secondaires Aucun
Voir aussi Instruction CREATE INDEX la page 383
Utilisation dindex [ASA - Guide de lutilisateur SQL, page 182]
Exemple Lexemple suivant illustre lutilisation de la procdure stocke
sa_index_levels pour renvoyer le nombre de niveaux de lindex Products :
CALL sa_index_levels()

TableName TableId IndexName ... Levels

Products 436 Products ... 1

... ... ... ... ...

Procdure systme sa_java_loaded_classes


Fonction Etablir la liste des classes actuellement charges par la machine virtuelle
Java de la base de donnes.
Syntaxe sa_java_loaded_classes ( )

Jeux de rsultats

Nom de colonne Type de donnes Description

class_name varchar(512) Nom dune classe ac-


tuellement charge par
la machine virtuelle Java
de la base de donnes.
Remarques Renvoie un jeu de rsultats contenant les noms de toutes les classes Java
actuellement charges par la machine virtuelle Java de la base de donnes.
Lorsque la machine virtuelle est appele pour la premire fois, elle charge un
certain nombre de classes. Si vous appelez la procdure
sa_java_loaded_classes alors que vous navez utilis aucune classe Java
jusqu prsent dans les fonctionnalits de base de donnes, cest cet
ensemble de classes qui est renvoy.

845
Cette procdure peut savrer utile pour identifier les classes manquantes.
Elle permet galement de dterminer les classes dun fichier JAR utilises
par une application donne.
Autorisations Les droits DBA sont requis.
Effets secondaires Aucun
Voir aussi Installation de classes Java dans une base de donnes [ASA - Guide de
programmation, page 97].

Procdure systme sa_locks


Fonction Afficher tous les verrous de la base de donnes.
Syntaxe sa_locks (
[ connexion
[ , nom_table
[ , verrous_max ] ] ]
)

Arguments connexion Paramtre entier spcifiant un ID de connexion. La


procdure renvoie des informations de verrouillage qui ne portent que sur
la connexion spcifie. La valeur par dfaut est zro, auquel cas les
informations renvoyes concernent toutes les connexions.
nom_table Paramtre char(128) spcifiant un nom de table. La
procdure renvoie des informations uniquement sur les tables spcifies.
La valeur par dfaut est NULL, auquel cas les informations renvoyes
concernent toutes les tables.
Si la chane nom_table comporte un point, la valeur situe gauche de ce
point est interprte comme le nom du propritaire.

verrous_max Paramtre entier spcifiant le nombre maximal de


verrous sur lesquels renvoyer des informations. La valeur par dfaut
est 1000. La valeur -1 indique que les informations sur tous les verrous
sont renvoyes.
Jeux de rsultats

846
Chapitre 7. Fonctions et procdures systme

Nom de colonne Type de donnes Description

connection integer ID de connexion poss-


dant le verrou.

user_id char(128) Utilisateur connect via


lID de connexion.

table_name char(128) Table sur laquelle est


maintenu le verrou.

lock_type char(32) Chane de caractres


indiquant de quel type
est le verrou.
lock_name unsigned bigint Valeur de nom de ver-
rou identifiant le ver-
rou. Cette valeur peut
tre mise en correspon-
dance avec le rsultat
de sa_conn_info pour
dterminer les verrous
responsables dune si-
tuation bloque. Le nom
dun verrou peut tre
un numro de ligne ou
avoir la valeur NULL.
Remarques La procdure sa_locks renvoie un jeu de rsultats contenant des informations
sur les verrous de la base de donnes.
Le champ lock_type du jeu de rsultats est une chane de caractres
indiquant le type du verrou. Pour les valeurs lock_name autres que NULL,
les caractres lock_type sont :
S (Shared) Partag
E (Exclusive) Exclusif
P (Phantom) Fantme
A (Anti-phantom) Anti-fantme
Tous les verrous rpertoris comportent exactement un caractre S ou E, et
peuvent en outre contenir P ou A, voire les deux. Si un verrou est de type
fantme ou anti-fantme, un qualificatif est ajout au type de verrou. Il peut
sagir des prcisions suivantes :
T Le verrou se rapporte un balayage squentiel.

847
* Le verrou se rapporte tous les balayages.
nnn Numro dindex. Le verrou se rapporte un index particulier.

lock_name NULL Si la valeur de lock_name est NULL, la ligne contient des informations sur
les deux types de verrous suivants : verrou de schma et verrou de ligne. Les
valeurs lock_type peuvent tre une combinaison de :
S Verrou de schma partag

E Verrou de schma exclusif


AT Verrou de ligne partag

PT Verrou dintention sur une ligne


Un verrou de schma signifie que les autres transactions ne peuvent pas
modifier le schma de la table. Ce type de verrou peut tre pos en mode
partag (S) ou exclusif (E).
Le verrou de ligne sapplique aux lignes de la table. Il peut tre pos en
mode partag ou intentionnel. Le mode partag est reprsent par le
lock_type AT, et le mode intentionnel, par le lock_type PT. Si un verrou est
pos en mode partag, les autres transactions ne peuvent pas modifier les
lignes moins de poser le verrou en mode intentionnel. Toutefois, le verrou
ne peut tre pos en mode partag que si aucune modification non valide
na t apporte la table par dautres transactions.
Par exemple, si une connexion a modifi une table mais na pas encore
valid ni annul cette modification, la procdure sa_locks renvoie un nom de
verrou NULL pour la table, et un type de verrou dau moins SPT. S indique
un verrou partag sur le schma de la table et PT, un verrou dintention sur
les lignes de la table.
Pour plus dinformations, reportez-vous aux sections Proprits de
niveau connexion [ASA - Guide dadministration, page 775] et Procdure
systme sa_conn_info la page 820.
Autorisations Les droits DBA sont requis
Effets secondaires Aucun
Voir aussi Fonctionnement du verrouillage [ASA - Guide de lutilisateur SQL,
page 148]

Procdure systme sa_make_object


Fonction Vrifier lexistence de linstance squelettique dun objet avant lexcution
dune instruction ALTER.

848
Chapitre 7. Fonctions et procdures systme

Syntaxe sa_make_object (
type_objet,
nom_obj
[, propritaire
[, nom_tab ] ])

type_objet:
procedure | function | view | trigger | service

Arguments type_objet Paramtre char(30) spcifiant le type dobjet en cours de


cration.
nom_obj Paramtre char(128) spcifiant le nom de lobjet crer.

propritaire Paramtre char(128) spcifiant le propritaire de lobjet


crer. La valeur par dfaut est CURRENT USER.

nom_tab Paramtre char(128) uniquement requis si le type de lobjet


est trigger, auquel cas il spcifie le nom de la table pour laquelle le
trigger doit tre cr.

Remarques Cette procdure savre particulirement utile dans les scripts ou les fichiers
de commandes qui sont excuts de manire rptitive pour crer ou
modifier un schma de base de donnes. Or, ces scripts prsentent un
problme commun : lorsquils sont excuts pour la premire fois,
linstruction CREATE doit tre excute, mais lors des excutions suivantes,
cest linstruction ALTER qui doit tre utilise. Cette procdure permet
dviter une recherche dans les tables systme pour savoir si lobjet existe.
Pour lutiliser, il suffit de la suivre laide dune instruction ALTER qui
contient la dfinition entire de lobjet.
Autorisations Le droit Resource est ncessaire pour crer ou modifier des objets de base de
donnes
Effets secondaires Commit automatique
Voir aussi Instruction ALTER FUNCTION la page 285
Instruction ALTER PROCEDURE la page 288
Instruction ALTER TRIGGER la page 313
Instruction ALTER VIEW la page 315
Instruction ALTER SERVICE la page 297
Exemples Les instructions suivantes garantissent quune dfinition de procdure
lmentaire est cre, dfinissent la procdure et octroient des autorisations
dessus. Un fichier de commandes qui contient ces instructions pourrait tre
excut de manire rptitive sur une base de donnes sans quaucune erreur
ne survienne.

849
CALL sa_make_object( procedure,myproc );
ALTER PROCEDURE myproc( in p1 int, in p2 char(30) )
BEGIN
// ...
END;
GRANT EXECUTE ON myproc TO public;

Lexemple suivant utilise la procdure systme sa_make_object pour ajouter


un service Web lmentaire.
CALL sa_make_object( service,my_web_service )

Procdure systme sa_migrate


Fonction Effectuer la migration dun ensemble de tables distantes vers une base de
donnes Adaptive Server Anywhere.
Syntaxe sa_migrate ( propritaire_table_locale,
nom_serveur
[, nom_table ]
[, nom_propritaire ]
[, nom_base_de_donnes ]
[, migrer_donnes ]
[, supprimer_tables_proxy ]
[, migrer_cls_trangres ]
)

Arguments propritaire_table_locale Paramtre varchar(128) spcifiant


lutilisateur de la base de donnes cible Adaptive Server Anywhere
propritaire des tables ayant fait lobjet dune migration. Utilisez
linstruction GRANT CONNECT pour crer cet utilisateur. Une valeur
doit tre obligatoirement fournie pour ce paramtre.
Pour plus dinformations, reportez-vous la section Instruction
GRANT la page 524.
nom_serveur Paramtre varchar(128) spcifiant le nom du serveur
distant utilis pour tablir la connexion la base de donnes distante.
Utilisez linstruction CREATE SERVER pour crer ce serveur. Une
valeur doit tre obligatoirement fournie pour ce paramtre.
Pour plus dinformations, reportez-vous la section Instruction
CREATE SERVER la page 409.
nom_table Si vous effectuez la migration dune seule table, utilisez ce
paramtre varchar(128) pour spcifier le nom de cette table. Dans le cas
contraire, vous devez spcifier la valeur NULL (valeur par dfaut) pour
ce paramtre. Nindiquez pas NULL pour les deux paramtres nom_table
et nom_propritaire.

850
Chapitre 7. Fonctions et procdures systme

nom_propritaire Si vous effectuez la migration de tables qui


nappartiennent qu un seul propritaire, utilisez ce paramtre
varchar(128) pour spcifier le nom de ce propritaire. Dans le cas
contraire, vous devez spcifier la valeur NULL (valeur par dfaut) pour
ce paramtre. Nindiquez pas NULL pour les deux paramtres nom_table
et nom_propritaire.
nom_base_de_donnes Ce paramtre varchar(128) indique le nom
de la base de donnes distante. Vous devez spcifier le nom de la base de
donnes si vous souhaitez effectuer une migration des tables issues dune
seule base de donnes sur le serveur distant. Dans le cas contraire, vous
devez spcifier la valeur NULL (valeur par dfaut) pour ce paramtre.

migrer_donnes Ce paramtre spcifie si une migration des donnes


des tables distantes est effectue. Il peut tre dfini avec la valeur 0 (ne
pas faire migrer les donnes) ou la valeur 1 (faire migrer les donnes). Par
dfaut, les donnes font lobjet dune migration.

supprimer_tables_proxy Ce paramtre spcifie si les tables proxy


cres pour le processus de migration sont supprimes une fois la
migration termine. Il peut tre dfini avec la valeur 0 (les tables proxy ne
sont pas supprimes) ou la valeur 1 (les tables proxy sont supprimes).
Par dfaut, les tables proxy sont supprimes.
migrer_cls_trangres Indique si les mappages de cls trangres
font lobjet dune migration. Il peut tre dfini avec la valeur 0 (ne pas
migrer les mappages de cls trangres) ou 1 (migrer les mappages de
cls trangres). Par dfaut, les mappages de cls trangres font lobjet
dune migration.
Remarques Vous pouvez utiliser cette procdure pour effectuer la migration de tables
vers Adaptive Server Anywhere partir dune base de donnes distante
Oracle, DB2, SQL Server, Adaptive Server Enterprise,
Adaptive Server Anywhere ou Access. Cette procdure vous permet
deffectuer, en une seule tape, la migration dun ensemble de tables
distantes, y compris leurs mappages de cls trangres, partir du serveur
spcifi. La procdure stocke sa_migrate appelle les procdures stockes
suivantes :

sa_migrate_create_remote_table_list
sa_migrate_create_tables
sa_migrate_data
sa_migrate_create_remote_fks_list

851
sa_migrate_create_fks
sa_migrate_drop_proxy_tables

Pour plus de souplesse, vous pouvez utiliser ces procdures stockes la


place de la procdure sa_migrate. Par exemple, lorsque vous effectuez la
migration de tables qui contiennent des relations de cls trangres et qui
appartiennent diffrents utilisateurs, il est impossible de conserver ces
relations si vous utilisez sa_migrate.
Avant deffectuer la migration de tables, vous devez tout dabord crer un
serveur distant pour tablir la connexion la base de donnes distante. Pour
ce faire, utilisez linstruction CREATE SERVER. Il peut galement savrer
ncessaire de crer un login externe vers la base de donnes distante laide
de linstruction CREATE EXTERNLOGIN.
Pour plus dinformations, reportez-vous aux sections Instruction
CREATE SERVER la page 409 et Instruction CREATE
EXTERNLOGIN la page 374.
Vous pouvez effectuer une migration de toutes les tables de la base distante
vers une base de donnes Adaptive Server Anywhere en ne spcifiant que les
paramtres propritaire_table_locale et nom_serveur. Toutefois, si vous ne
spcifiez que ces deux paramtres, toutes les tables ayant fait lobjet dune
migration appartiendront un seul propritaire dans la base de donnes cible
Adaptive Server Anywhere. Si diffrents propritaires sont associs aux
tables de la base de donnes distante et que vous souhaitez conserver ces
diffrents propritaires dans la base de donnes Adaptive Server Anywhere,
vous devez effectuer une migration des tables associes chaque
propritaire sparment, en spcifiant les paramtres
propritaire_table_locale et nom_propritaire chaque fois que vous appelez
la procdure sa_migrate. Pour pouvoir utiliser cette procdure, vous devez
disposer des autorisations ncessaires de cration de table pour lutilisateur
local dAdaptive Server Anywhere.

Attention
Nindiquez pas NULL pour les deux paramtres nom_table et nom_-
propritaire. Si vous attribuez la valeur NULL la fois au paramtre
nom_table et nom_propritaire, toutes les tables migrent vers la base de
donnes, y compris les tables systme. En outre, les tables qui portent le
mme nom, mais comportent des propritaires diffrents dans une base de
donnes distante, appartiennent toutes au mme propritaire dans la base de
donnes cible. Il est recommand de transfrer toutes les tables associes
un propritaire en une seule fois.
Autorisations Aucune

852
Chapitre 7. Fonctions et procdures systme

Effets secondaires Aucun


Voir aussi Procdure systme sa_migrate_create_remote_table_list la page 856
Procdure systme sa_migrate_create_tables la page 858
Procdure sa_migrate_data la page 859
Procdure systme sa_migrate_create_remote_fks_list la page 855
Procdure systme sa_migrate_create_fks la page 853
Procdure systme sa_migrate_drop_proxy_tables la page 860
Migration de bases de donnes vers Adaptive Server Anywhere [ASA -
Guide de lutilisateur SQL, page 636]

Exemples Linstruction suivante effectue la migration de toutes les tables appartenant


lutilisateur p_chin depuis la base de donnes distante, y compris les
mappages de cls trangres ; elle effectue la migration des donnes des
tables distantes et supprime les tables proxy une fois la migration termine.
Dans lexemple suivant, toutes les tables qui font lobjet dune migration
appartiennent local_user dans la base de donnes cible Adaptive Server
Anywhere.
CALL sa_migrate( local_user, server_a, NULL, p_chin, NULL,
1, 1, 1 )

Linstruction suivante illustre la migration des tables appartenant


uniquement lutilisateur remote_a de la base de donnes distante. Dans la
base de donnes cible Adaptive Server Anywhere, ces tables appartiennent
lutilisateur local_a. Les tables Proxy cres pendant la migration ne sont
pas supprimes la fin.
CALL sa_migrate( local_a, server_a, NULL, remote_a, NULL,
1, 0, 1 )

Procdure systme sa_migrate_create_fks


Fonction Crer des cls trangres pour chaque table rpertorie dans la table
dbo.migrate_remote_fks_list.
Syntaxe sa_migrate_create_fks ( propritaire_table_locale )

Argument propritaire_table_locale Paramtre varchar(128) spcifiant


lutilisateur de la base de donnes cible Adaptive Server Anywhere
propritaire des cls trangres ayant fait lobjet dune migration. Pour
faire migrer les tables appartenant diffrents utilisateurs, excutez cette
procdure pour chaque utilisateur possdant les tables pour lesquelles
vous souhaitez effectuer une migration. Le propritaire_table_locale est
cr laide de linstruction GRANT CONNECT. Une valeur doit tre
obligatoirement fournie pour ce paramtre.
Pour plus dinformations, reportez-vous la section Instruction

853
GRANT la page 524.
Remarques La procdure stocke sa_migrate_create_fks est utilise avec les autres
procdures stockes de migration. Ces procdures doivent tre excutes
dans lordre suivant :
1. sa_migrate_create_remote_table_list
2. sa_migrate_create_tables

3. sa_migrate_data
4. sa_migrate_create_remote_fks_list

5. sa_migrate_create_fks
6. sa_migrate_drop_proxy_tables
Cette procdure cre des cls trangres pour chaque table rpertorie dans
la table dbo.migrate_remote_fks_list. Lutilisateur spcifi par largument
propritaire_table_locale dtient les cls trangres dans la base de donnes
cible.
Si les tables de la base de donnes cible Adaptive Server Anywhere
nappartiennent pas toutes au mme propritaire, excutez cette procdure
pour chaque utilisateur dtenant les tables pour lesquelles vous devez
effectuer une migration des cls trangres.
Vous pouvez galement effectuer la migration de toutes les tables en une
seule tape laide de la procdure systme sa_migrate.
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Procdure systme sa_migrate la page 850
Procdure systme sa_migrate_create_remote_table_list la page 856
Procdure systme sa_migrate_create_tables la page 858
Procdure sa_migrate_data la page 859
Procdure systme sa_migrate_create_remote_fks_list la page 855
Procdure systme sa_migrate_drop_proxy_tables la page 860
Migration de bases de donnes vers Adaptive Server Anywhere [ASA -
Guide de lutilisateur SQL, page 636]

Exemple Linstruction suivante cre des cls trangres bases sur la table
dbo.migrate_remote_fks_list. Les cls trangres appartiennent
lutilisateur local_a de la base de donnes locale Adaptive Server Anywhere.
CALL sa_migrate_create_fks( local_a )

854
Chapitre 7. Fonctions et procdures systme

Procdure systme sa_migrate_create_remote_fks_list


Fonction Remplir la table dbo.migrate_remote_fks_list.
Syntaxe sa_migrate_create_remote_fks_list ( nom_serveur )

Argument nom_serveur Paramtre varchar(128) spcifiant le nom du serveur


distant utilis pour tablir la connexion la base de donnes distante. Le
serveur distant est cr laide de linstruction CREATE SERVER. Une
valeur doit tre obligatoirement fournie pour ce paramtre.
Pour plus dinformations, reportez-vous la section Instruction
CREATE SERVER la page 409.
Remarques La procdure stocke sa_migrate_create_remote_fks_list est utilise avec les
autres procdures stockes de migration. Ces procdures doivent tre
excutes dans lordre suivant :
1. sa_migrate_create_remote_table_list
2. sa_migrate_create_tables
3. sa_migrate_data
4. sa_migrate_create_remote_fks_list
5. sa_migrate_create_fks
6. sa_migrate_drop_proxy_tables
Cette procdure remplit la table dbo.migrate_remote_fks_list avec une liste
de cls trangres qui peuvent migrer partir de la base de donnes distante.
Vous pouvez supprimer les lignes de cette table correspondant aux cls
trangres que vous ne souhaitez pas faire migrer.
Vous pouvez galement effectuer la migration de toutes les tables en une
seule tape laide de la procdure systme sa_migrate.
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Procdure systme sa_migrate la page 850
Procdure systme sa_migrate_create_remote_table_list la page 856
Procdure systme sa_migrate_create_tables la page 858
Procdure sa_migrate_data la page 859
Procdure systme sa_migrate_create_fks la page 853
Procdure systme sa_migrate_drop_proxy_tables la page 860
Migration de bases de donnes vers Adaptive Server Anywhere [ASA -
Guide de lutilisateur SQL, page 636]

855
Exemple Linstruction suivante cre une liste de cls trangres figurant dans la base
de donnes distante.
CALL sa_migrate_create_remote_fks_list ( server_a )

Procdure systme sa_migrate_create_remote_table_list


Fonction Remplir la table dbo.migrate_remote_table_list.
Syntaxe sa_migrate_create_remote_table_list (
nom_serveur
[, nom_table
[, nom_propritaire
[, nom_base_de_donnes ] ] ]
)

Arguments nom_serveur Paramtre varchar(128) spcifiant le nom du serveur


distant utilis pour tablir la connexion la base de donnes distante. Le
serveur distant est cr laide de linstruction CREATE SERVER. Une
valeur doit tre obligatoirement fournie pour ce paramtre.
Pour plus dinformations, reportez-vous la section Instruction
CREATE SERVER la page 409.
nom_table Paramtre varchar(128) spcifiant le nom de la table ou des
tables faire migrer ; utilisez la valeur NULL pour faire migrer toutes les
tables. La valeur par dfaut est NULL. Nindiquez pas NULL pour les
deux paramtres nom_table et nom_propritaire.
nom_propritaire Paramtre varchar(128) spcifiant lutilisateur
dtenant les tables de la base de donnes distante que vous souhaitez faire
migrer ; utilisez la valeur NULL pour faire migrer toutes les tables. La
valeur par dfaut est NULL. Nindiquez pas NULL pour les deux
paramtres nom_table et nom_propritaire.

nom_base_de_donnes Paramtre varchar(128) spcifiant le nom de


la base de donnes distante partir de laquelle vous souhaitez faire migrer
des tables. Le paramtre par dfaut est NULL. Lorsque vous faites migrer
des tables partir de bases de donnes Adaptive Server Enterprise et
Microsoft SQL Server, vous devez spcifier le nom de la base de donnes.
Remarques La procdure stocke sa_migrate_create_remote_table_list est utilise avec
les autres procdures stockes de migration. Ces procdures doivent tre
excutes dans lordre suivant :
1. sa_migrate_create_remote_table_list
2. sa_migrate_create_tables

856
Chapitre 7. Fonctions et procdures systme

3. sa_migrate_data
4. sa_migrate_create_remote_fks_list

5. sa_migrate_create_fks

6. sa_migrate_drop_proxy_tables
Cette procdure remplit la table dbo.migrate_remote_table_list avec une
liste de tables qui peuvent migrer partir de la base de donnes distante.
Vous pouvez supprimer les lignes de cette table correspondant aux tables
distantes dont vous ne souhaitez pas effectuer la migration.
Si vous ne souhaitez pas que toutes les tables qui font lobjet de la migration
soient associes au mme propritaire dans la base de donnes cible
Adaptive Server Anywhere, excutez cette procdure pour chaque utilisateur
possdant les tables faire migrer.
Vous pouvez galement effectuer la migration de toutes les tables en une
seule tape laide de la procdure systme sa_migrate.

Attention
Nindiquez pas NULL pour les deux paramtres nom_table et nom_-
propritaire. Si vous attribuez la valeur NULL la fois au paramtre
nom_table et nom_propritaire, toutes les tables migrent vers la base de
donnes, y compris les tables systme. En outre, les tables qui portent le
mme nom, mais comportent des propritaires diffrents dans une base de
donnes distante, appartiennent toutes au mme propritaire dans la base de
donnes cible. Il est recommand de transfrer toutes les tables associes
un propritaire en une seule fois.
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Procdure systme sa_migrate la page 850
Procdure systme sa_migrate_create_tables la page 858
Procdure sa_migrate_data la page 859
Procdure systme sa_migrate_create_remote_fks_list la page 855
Procdure systme sa_migrate_create_fks la page 853
Procdure systme sa_migrate_drop_proxy_tables la page 860
Migration de bases de donnes vers Adaptive Server Anywhere [ASA -
Guide de lutilisateur SQL, page 636]

Exemple Linstruction suivante cre une liste de tables appartenant lutilisateur


remote_a de la base de donnes distante.
CALL sa_migrate_create_remote_table_list( server_a, NULL,
remote_a, NULL )

857
Procdure systme sa_migrate_create_tables
Fonction Crer une table Proxy et une table sous-jacente pour chaque table rpertorie
dans la table dbo.migrate_remote_table_list.
Syntaxe sa_migrate_create_tables ( propritaire_table_locale )

Argument propritaire_table_locale Paramtre varchar(128) spcifiant


lutilisateur de la base de donnes cible Adaptive Server Anywhere
propritaire des tables ayant fait lobjet dune migration. Cet utilisateur
est cr laide de linstruction GRANT CONNECT. Une valeur doit
tre obligatoirement fournie pour ce paramtre.
Pour plus dinformations, reportez-vous la section Instruction
GRANT la page 524.
Remarques La procdure stocke sa_migrate_create_tables est utilise avec les autres
procdures stockes de migration. Ces procdures doivent tre excutes
dans lordre suivant :
1. sa_migrate_create_remote_table_list

2. sa_migrate_create_tables
3. sa_migrate_data
4. sa_migrate_create_remote_fks_list

5. sa_migrate_create_fks
6. sa_migrate_drop_proxy_tables
Cette procdure cre une table sous-jacente et une table Proxy pour chaque
table rpertorie dans la table dbo.migrate_remote_table_list (cre laide
de la procdure sa_migrate_create_remote_table_list). Ces tables proxy et
sous-jacentes appartiennent lutilisateur spcifi par largument
propritaire_table_locale. Cette procdure cre galement pour la nouvelle
table les mmes index de cl primaire et dautres index que ceux dont
dispose la table distante dans la base de donnes distante.
Si vous ne souhaitez pas que toutes les tables qui migrent soient associes au
mme propritaire dans la base de donnes cible Adaptive Server Anywhere,
excutez les procdures sa_migrate_create_remote_table_list et
sa_migrate_create_tables pour chaque utilisateur qui sera propritaire de
tables ayant fait lobjet dune migration.
Vous pouvez galement effectuer la migration de toutes les tables en une
seule tape laide de la procdure systme sa_migrate.

858
Chapitre 7. Fonctions et procdures systme

Autorisations Aucune
Effets secondaires Aucun
Voir aussi Procdure systme sa_migrate la page 850
Procdure systme sa_migrate_create_remote_table_list la page 856
Procdure sa_migrate_data la page 859
Procdure systme sa_migrate_create_remote_fks_list la page 855
Procdure systme sa_migrate_create_fks la page 853
Procdure systme sa_migrate_drop_proxy_tables la page 860
Migration de bases de donnes vers Adaptive Server Anywhere [ASA -
Guide de lutilisateur SQL, page 636]

Exemple Linstruction suivante cre des tables sous-jacentes et des tables Proxy dans
la base de donnes cible Adaptive Server Anywhere. Ces tables
appartiennent lutilisateur local_a.
CALL sa_migrate_create_tables( local_a )

Procdure sa_migrate_data
Fonction Effectuer la migration de donnes partir des tables de base de donnes
distantes vers la base de donnes cible Adaptive Server Anywhere.
Syntaxe sa_migrate_data ( propritaire_table_locale )

Argument propritaire_table_locale Paramtre varchar(128) spcifiant


lutilisateur de la base de donnes cible Adaptive Server Anywhere
propritaire des tables ayant fait lobjet dune migration. Cet utilisateur
est cr laide de linstruction GRANT CONNECT. Une valeur doit
tre obligatoirement fournie pour ce paramtre.
Pour plus dinformations, reportez-vous la section Instruction
GRANT la page 524.
Remarques La procdure stocke sa_migrate_data est utilise avec les autres procdures
stockes de migration. Ces procdures doivent tre excutes dans lordre
suivant :
1. sa_migrate_create_remote_table_list
2. sa_migrate_create_tables
3. sa_migrate_data
4. sa_migrate_create_remote_fks_list
5. sa_migrate_create_fks
6. sa_migrate_drop_proxy_tables

859
Cette procdure effectue la migration des donnes de la base distante vers la
base de donnes Adaptive Server Anywhere pour les tables appartenant
lutilisateur spcifi par le paramtre propritaire_table_locale.
Si les tables de la base de donnes cible Adaptive Server Anywhere
nappartiennent pas toutes au mme propritaire, excutez cette procdure
pour chaque utilisateur dont les tables contiennent des donnes que vous
souhaitez faire migrer.
Vous pouvez galement effectuer la migration de toutes les tables en une
seule tape laide de la procdure systme sa_migrate.
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Procdure systme sa_migrate la page 850
Procdure systme sa_migrate_create_remote_table_list la page 856
Procdure systme sa_migrate_create_tables la page 858
Procdure systme sa_migrate_create_remote_fks_list la page 855
Procdure systme sa_migrate_create_fks la page 853
Procdure systme sa_migrate_drop_proxy_tables la page 860
Migration de bases de donnes vers Adaptive Server Anywhere [ASA -
Guide de lutilisateur SQL, page 636]

Exemple Linstruction suivante effectue la migration de donnes vers la base de


donnes cible Adaptive Server Anywhere pour les tables appartenant
lutilisateur local_a.
CALL sa_migrate_data( local_a )

Procdure systme sa_migrate_drop_proxy_tables


Fonction Supprimer les tables proxy qui ont t cres des fins de migration.
Syntaxe sa_migrate_drop_proxy_tables ( propritaire_table_locale )

Argument propritaire_table_locale Paramtre varchar(128) spcifiant


lutilisateur de la base de donnes cible Adaptive Server Anywhere
propritaire des tables proxy. Cet utilisateur est cr laide de
linstruction GRANT CONNECT. Une valeur doit tre obligatoirement
fournie pour ce paramtre.
Pour plus dinformations, reportez-vous la section Instruction
GRANT la page 524.
Remarques La procdure stocke sa_migrate_drop_proxy_tables est utilise avec les
autres procdures stockes de migration. Ces procdures doivent tre
excutes dans lordre suivant :

860
Chapitre 7. Fonctions et procdures systme

1. sa_migrate_create_remote_table_list
2. sa_migrate_create_tables

3. sa_migrate_data

4. sa_migrate_create_remote_fks_list
5. sa_migrate_create_fks

6. sa_migrate_drop_proxy_tables
Cette procdure supprime les tables proxy qui ont t cres des fins de
migration. Lutilisateur qui dtient ces tables proxy est spcifi par
largument propritaire_table_locale.
Si les tables que vous faites migrer nappartiennent pas toutes au mme
utilisateur dans la base de donnes cible Adaptive Server Anywhere, vous
devez appeler cette procdure pour chaque utilisateur afin de supprimer
toutes les tables proxy.
Vous pouvez galement effectuer la migration de toutes les tables en une
seule tape laide de la procdure systme sa_migrate.
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Procdure systme sa_migrate la page 850
Procdure systme sa_migrate_create_remote_table_list la page 856
Procdure systme sa_migrate_create_tables la page 858
Procdure sa_migrate_data la page 859
Procdure systme sa_migrate_create_remote_fks_list la page 855
Procdure systme sa_migrate_create_fks la page 853
Migration de bases de donnes vers Adaptive Server Anywhere [ASA -
Guide de lutilisateur SQL, page 636]
Exemple Linstruction suivante supprime les tables proxy de la base de donnes cible
Adaptive Server Anywhere qui appartiennent lutilisateur local_a.
CALL sa_migrate_drop_proxy_tables( local_a )

Procdure systme sa_procedure_profile


Fonction Gnrer un rapport sur le temps dexcution de chaque ligne au sein des
procdures qui ont t excutes dans une base de donnes.

861
Syntaxe sa_procedure_profile (
[ nom_objet_p
[, nom_propritaire_p
[, nom_table_p ] ] ]
)

Arguments nom_objet_p Paramtre varchar(128) facultatif spcifiant le nom de la


procdure stocke, de la fonction, de lvnement ou du trigger.
nom_propritaire_p Paramtre char(128) facultatif spcifiant le
propritaire de lobjet.
nom_table_p Paramtre char(128) facultatif spcifiant la table associe
un trigger (pour les autres types dobjet, cette valeur est NULL).
Jeux de rsultats

Nom de colonne Type de donnes Description

object_type char(1) Type de lobjet.

object_name char(128) Nom de la procdure


stocke, de la fonction,
de lvnement ou du
trigger. Le type dobjet
C ou D correspond au
nom de la cl trangre
pour laquelle le trigger
systme a t dfini.

owner_name char(128) Propritaire de lobjet.

table_name char(128) Table associe un


trigger (pour les autres
types dobjet, cette va-
leur est NULL).

line_num unsigned integer Numro de la ligne au


sein de la procdure.

executions unsigned integer Nombre dexcutions de


la ligne.

millisecs unsigned integer Dure dexcution de la


ligne en millisecondes.

percentage double Pourcentage du temps


dexcution total nces-
saire pour cette ligne.

862
Chapitre 7. Fonctions et procdures systme

Nom de colonne Type de donnes Description

foreign_owner char(128) Utilisateur de la base de


donnes auquel appar-
tient la table trangre
dun trigger systme.

foreign_table char(128) Nom de la table tran-


gre dun trigger sys-
tme.

Remarques Pour pouvoir tablir le profil de votre base de donnes, vous devez activer le
profilage.
Pour plus dinformations sur lactivation du profilage des procdures,
reportez-vous Procdure systme sa_server_option la page 872.
La procdure accepte trois arguments facultatifs. Si vous spcifiez plusieurs
de ces arguments, vous devez les rpertorier dans lordre indiqu ici
(nom_objet_p, nom_propritaire_p, nom_table_p ). Les arguments sont des
chanes et doivent figurer entre apostrophes. Si vous ne prcisez aucun
argument, le serveur renvoie des donnes pour toutes les procdures de la
base.
Le jeu de rsultats obtenu comprend des informations sur les temps
dexcution de chaque ligne des procdures, ainsi que le pourcentage de la
dure totale dexcution des procdures utilis par ces lignes. Le DBA peut
se servir de ces informations de profilage pour optimiser les procdures les
plus lentes, susceptibles de rduire les performances. Cette procdure
renvoie les mmes informations pour les procdures stockes, les fonctions,
les vnements et les triggers que longlet Profil de Sybase Central.
Le champ object_type du jeu de rsultats peut tre :
P procdure stocke
F fonction
E vnement
T trigger
C trigger systme ON UPDATE
D trigger systme ON DELETE
Si vous appelez les procdures qui vous intressent avant de dbuter une
session de profilage, vous liminez le dlai de dmarrage ncessaire pour

863
charger les procdures et pour que la base de donnes accde aux tables pour
la premire fois.
Autorisations Les droits DBA sont requis
Effets secondaires Aucun
Voir aussi Procdure systme sa_server_option la page 872
Procdure systme sa_procedure_profile_summary la page 864
Exemple Linstruction suivante renvoie des informations de profilage sur le trigger
tr_manager :
CALL sa_procedure_profile (p_object_name = tr_manager)

Procdure systme sa_procedure_profile_summary


Fonction Gnrer un rapport de synthse sur les temps dexcution de toutes les
procdures ayant t excutes dans une base de donnes.
Syntaxe sa_procedure_profile_summary (
[nom_table_p
[, nom_propritaire_p
[, nom_objet_p
[, type_objet_p
[, ordonnancement_p ] ] ] ] ]
)

Arguments La procdure accepte cinq arguments facultatifs :


nom_objet_p Paramtre varchar(128) facultatif spcifiant le nom de la
procdure stocke, de la fonction, de lvnement ou du trigger.
nom_propritaire_p Paramtre char(128) facultatif spcifiant le
propritaire de lobjet.
nom_table_p Paramtre char(128) facultatif spcifiant la table associe
un trigger (pour les autres types dobjet, cette valeur est NULL).
type_objet_p Paramtre char(1) facultatif spcifiant le type dobjet
profiler. Il peut sagir dun des types suivants :
P procdure stocke
F fonction
E vnement
T trigger
S trigger systme
C trigger systme ON UPDATE

864
Chapitre 7. Fonctions et procdures systme

D trigger systme ON DELETE


ordonnancement_p Paramtre char(1) facultatif dterminant lordre
des colonnes dans le jeu de rsultats. Si vous nindiquez aucune valeur,
les rsultats sont prsents du temps dexcution le plus long au temps le
plus court. Les valeurs sont renvoyes dans lordre suivant :
P type_objet, nom_propritaire, nom_objet, desc_nom_table
N nom_objet, nom_propritaire, nom_table, desc_type_objet
O nom_propritaire, type_objet, nom_objet, desc_nom_table
T nom_table, nom_propritaire, nom_objet, desc_type_objet
E desc_excutions, nom_objet, nom_propritaire, nom_table,
desc_type_objet
Jeux de rsultats

Nom de colonne Type de donnes Description

object_type char(1) Type de lobjet.

object_name char(128) Nom de la procdure


stocke, de la fonction,
de lvnement ou du
trigger.

owner_name char(128) Propritaire de lobjet.

table_name char(128) Table associe un


trigger (pour les autres
types dobjet, cette va-
leur est NULL).

executions unsigned integer Nombre dexcutions de


chaque procdure.

millisecs unsigned integer Dure dexcution de


la procdure en millise-
condes.

foreign_owner char(128) Utilisateur de la base de


donnes auquel appar-
tient la table trangre
dun trigger systme.

foreign_table char(128) Nom de la table tran-


gre dun trigger sys-
tme.

865
Remarques Pour pouvoir tablir le profil de votre base de donnes, vous devez activer le
profilage.
Pour plus dinformations sur lactivation du profilage des procdures,
reportez-vous Procdure systme sa_server_option la page 872.
Cette procdure affiche des informations sur la frquence dutilisation et
lefficacit de procdures stockes, de fonctions, dvnements et de
triggers. Vous pouvez ensuite vous servir de ces informations pour optimiser
les procdures les plus lentes et amliorer ainsi les performances de la base
de donnes. Cette procdure renvoie les mmes informations pour les
procdures stockes, les fonctions, les vnements et les triggers que
longlet Profil de Sybase Central.
Si vous spcifiez plusieurs arguments, vous devez les rpertorier dans lordre
indiqu ici (nom_objet_p, nom_propritaire_p, nom_table_p, type_objet_p,
ordonnancement_p ). Si vous indiquez lun de ces arguments, la procdure
renvoie uniquement les lignes correspondant aux paramtres. Dans le cas
contraire, le serveur renvoie des donnes pour toutes les procdures de la
base. Les valeurs dargument sont des chanes et doivent figurer entre
guillemets.
Le champ object_type du jeu de rsultats peut tre :
P procdure stocke
F fonction

E vnement
T trigger
S trigger systme

C trigger systme ON UPDATE


D trigger systme ON DELETE
Si vous appelez les procdures qui vous intressent avant de dbuter une
session de profilage, vous liminez le dlai de dmarrage ncessaire pour
charger les procdures et pour que la base de donnes accde aux tables pour
la premire fois.
Autorisations Les droits DBA sont requis
Effets secondaires Aucun
Voir aussi Procdure systme sa_server_option la page 872
Procdure systme sa_procedure_profile la page 861

866
Chapitre 7. Fonctions et procdures systme

Exemple Linstruction suivante renvoie des informations de profilage sur tous les
triggers dtenus par le DBA sur la table Product :
CALL sa_procedure_profile_summary
(p_owner_name = dba, p_table_name = Product, p_object_type =
T)

Procdure systme sa_recompile_views


Fonction Rechercher les dfinitions de vue stockes dans le catalogue pour lesquelles
il nexiste pas de dfinition de colonne et provoquer la cration de ces
dfinitions.
Syntaxe sa_recompile_views ( [ entier ] )

Argument entier Une valeur diffrente de zro pour ce paramtre integer


facultatif supprime les erreurs.
Remarques Cette procdure permet de rechercher les vues du catalogue pour lesquelles
il nexiste pas de dfinitions de colonne, puis dexcuter une instruction
ALTER VIEW avec la clause RECOMPILE afin de crer ces dfinitions.
Cette procdure opre ainsi pour chaque vue sans dfinition de colonne
jusqu ce quil nen reste plus compiler ou quaucune dfinition de
colonne restante ne puisse tre cre. Si cette procdure ne parvient pas
recompiler une vue, une erreur est signale. Ces erreurs peuvent tre vites
grce la spcification dun paramtre diffrent de zro dans cette
procdure.

Attention
La procdure systme sa_recompile_views ne doit tre appele que depuis
un script reload.sql. Cette procdure est utilise par lutilitaire de dchar-
gement dune base de donnes (dbunload) et ne doit pas tre employe de
manire explicite.
Autorisations Les droits DBA sont requis
Effets secondaires Sil existe des vues pour lesquelles aucune dfinition de colonne na t
stocke, une instruction ALTER VIEW propritaire.nomvue
RECOMPILE est excute, provoquant une validation automatique.
Voir aussi Option FORCE_VIEW_CREATION [base de donnes] [ASA - Guide
dadministration, page 714]

Instruction ALTER VIEW la page 315

Procdure systme sa_report_deadlocks


Fonction Rcuprer les informations relatives aux interblocages partir dun buffer

867
interne cr par le serveur de base de donnes.
Syntaxe sa_report_deadlocks( )

Jeux de rsultats

Nom de co- Type de don- Description


lonne nes

snapshotId bigint Instance dinterblocage (toutes les lignes


appartenant un interblocage spcifique
ont le mme ID).

snapshotAt timestamp Heure o sest produit linterblocage.

waiter int Gestionnaire de la connexion en attente.

who varchar(128) ID utilisateur associ la connexion en


attente.

what long varchar Commande excute par la connexion en


attente.
Cette information est uniquement dis-
ponible si vous avez activ la capture
de linstruction SQL la plus rcemment
prpare en spcifiant loption -zl sur la
ligne de commande du serveur de base de
donnes, ou si vous avez activ cette fonc-
tion au moyen de la procdure systme
sa_server_option.
wait_on bigint Nom du verrou.

owner int Gestionnaire de la connexion possdant le


verrou.

Remarques Lorsque loption LOG_DEADLOCKS est paramtre sur ON, le serveur de


base de donnes consigne les informations sur les interblocages dans un
buffer interne. Vous pouvez consulter ces informations dans le journal en
utilisant la procdure stocke sa_report_deadlocks.
Autorisations Les droits DBA sont requis.
Effets secondaires Aucun
Voir aussi Option LOG_DEADLOCKS [base de donnes] [ASA - Guide
dadministration, page 723]

Identification des connexions bloques [ASA - Guide de lutilisateur SQL,

868
Chapitre 7. Fonctions et procdures systme

page 127]

Procdure systme sa_reset_identity


Fonction Permettre de dfinir pour une table la prochaine valeur didentit disponible.
Utilisez cette procdure pour modifier la valeur dauto-incrmentation pour
la ligne suivante.
Syntaxe sa_reset_identity (
[ nom_table
[, propritaire
[, nouvelle_valeur_identit ] ] ]
)

Arguments nom_table Paramtre char(128) facultatif indiquant la table dont la


valeur didentit doit tre spcifie.
propritaire Paramtre varchar(128) facultatif spcifiant le propritaire
de la table dont la valeur didentit doit tre spcifie.
nouvelle_valeur_identit Paramtre bigint facultatif spcifiant le
numro partir duquel doit commencer le dcompte.
Remarques La prochaine valeur gnre pour une ligne insre dans la table sera
nouvelle_valeur_identit + 1.
La nouvelle_valeur_identit nest pas vrifie pour sassurer quelle nentre
pas en conflit avec des lignes de la table. Une valeur incorrecte risque de
provoquer lchec des insertions suivantes.
Autorisations Les droits DBA sont requis.
Effets secondaires Provoque un point de reprise aprs mise jour de la valeur.
Exemple Linstruction suivante rinitialise la valeur didentit 101 :
CALL sa_reset_identity (employee, dba, 100)

Procdure systme sa_rowgenerator


Fonction Renvoyer un jeu de rsultats avec des lignes entre une valeur spcifie de
dbut et de fin.
Syntaxe sa_rowgenerator (
[ dbut_l
[, fin_l
[, incrm_l ] ] ])

Arguments dbut_l Paramtre entier facultatif spcifiant la valeur de dbut. La


valeur par dfaut est 0.

869
fin_l Paramtre entier facultatif spcifiant la valeur de fin. La valeur par
dfaut est 100.

incrm_l Paramtre entier facultatif spcifiant la valeur


dincrmentation des valeurs de squence. La valeur par dfaut est 1.
Jeux de rsultats

Nom de colonne Type de donnes Description

row_num integer Numro de squence.


Remarques La procdure sa_rowgenerator peut tre employe dans la clause FROM
dune requte pour crer une squence de nombres. Cette procdure quivaut
utiliser la table systme RowGenerator. Vous pouvez, par exemple,
employer sa_rowgenerator pour les tches suivantes :

Gnrer des donnes de test pour un nombre connu de lignes dans un jeu
de rsultats.
Gnrer un jeu de rsultats renvoyant des lignes pour les valeurs de toutes
les plages. Vous pouvez crer par exemple une ligne pour chaque jour du
mois ou des plages de codes postaux.
Gnrer une requte avec un nombre spcifique de lignes dans le jeu de
rsultats. Ceci peut savrer utile pour tester les performances des
requtes.

Vous pouvez muler le comportement de la table RowGenerator en utilisant


linstruction suivantea:
SELECT row_num FROM sa_rowgenerator(1255)

Autorisations Aucune
Effets secondaires Aucun
Voir aussi Table systme RowGenerator la page 709
Exemples La requte suivante renvoie un jeu de rsultats contenant une ligne par jour
du mois en cours :
SELECT dateadd(day,row_num-1,
ymd(datepart(year,CURRENT DATE),
datepart(month,CURRENT DATE),
1)) AS day_of_month
FROM sa_RowGenerator(1,31,1)
WHERE datepart(month,day_of_month) =
datepart(month,CURRENT DATE)
ORDER BY row_num

870
Chapitre 7. Fonctions et procdures systme

La requte ci-aprs indique le nombre demploys par plage de codes


postaux (0-9999), (10000-19999), ..., (90000-99999). Certaines de ces
plages nont pas demploys, ce qui entrane lavertissement La valeur
NULL a t limine de la fonction dagrgat (-109). La
procdure sa_rowgenerator peut tre utilise pour crer ces plages, mme si
aucun employ na de code postal correspondant.
SELECT row_num AS r1, row_num+9999
AS r2, count(zip_code) AS zips_in_range
FROM sa_rowgenerator(0,99999,10000) D LEFT JOIN employee
ON zip_code BETWEEN r1 AND r2
GROUP BY r1, r2
ORDER BY 1

Lexemple suivant cre 10 lignes de donnes et les insre dans la table emp :
INSERT INTO emp(id, salary, name)
SELECT row_num,
CAST( rand() * 1000 AS INTEGER),
Mary
FROM sa_rowgenerator(1, 10)

Procdure systme sa_send_udp


Fonction Envoyer un paquet UDP ladresse spcifie.
Syntaxe sa_send_udp ( adresse_dest, port_dest, msg )

Arguments adresse_dest Paramtre char(254) correspondant au nom de lhte ou


au numro IP.
port_dest Paramtre UNSIGNED SMALLINT spcifiant le numro
de port utiliser.
msg Paramtre LONG BINARY contenant le message envoyer
ladresse spcifie. Si cette valeur est une chane, elle doit tre place
entre apostrophes.
Remarques Cette procdure envoie un paquet UDP unique ladresse spcifie. La
procdure renvoie 0 si le message est envoy avec succs, et un code
derreur en cas dchec. Le code derreur est lun des suivants :
-1 si le message est trop important pour un envoi sur socket UDP (selon
le systme dexploitation) ou en cas de problme avec ladresse de
destinationa ;
le code derreur Winsock/Posix renvoy par le systme dexploitation.
Si le paramtre msg contient des donnes binaires ou sil est plus complexe
quune chane, vous pouvez utiliser une variable. Par exemplea:

871
CREATE VARIABLE v LONG BINARY;
SET v=This is a UDP message;
SELECT dbo.sa_send_udp( 10.25.99.124, 1234, v );
DROP VARIABLE v;

Cette procdure peut tre employe avec la synchronisation MobiLink


excute par le serveur pour activer lutilitaire de rception (dblsn.exe ). Si
vous utilisez sa_send_udp afin pour notifier le rcepteur, vous devez ajouter
un 1 votre paquet UDP. Ce numro correspond un numro de protocole
de synchronisation excut par le serveur. Avec les fonctions ultrieures de
MobiLink, de nouvelles versions de protocoles pourraient entraner une
raction diffrente du rcepteur.
Autorisations Les droits DBA sont requis.
Effets secondaires Aucun
Voir aussi Notification au rcepteur laide de la procdure sa_send_udp
[Synchronisation MobiLink excute par le serveur - Guide de lutilisateur, page 13]

Exemple Lexemple suivant envoie le message This is a test ladresse IP


10.25.99.196, sur le port 2345 :
CALL sa_send_udp ( 10.25.99.196, 2345, This is a test )

Procdure systme sa_server_option


Fonction Ignorer une option de serveur pendant lexcution du serveur.
Syntaxe sa_server_option ( nom_option, valeur_option )

Arguments nom_option Paramtre char(128) spcifiant un nom doption de


serveur.
valeur_option Paramtre char(128) spcifiant la nouvelle valeur de
loption de serveur.

Remarques Les administrateurs de base de donnes peuvent avoir recours cette


procdure pour ignorer certaines options de ligne de commande du serveur
de base de donnes sans redmarrer le serveur.
Les valeurs doption modifies laide de cette procdure sont rinitialises
en fonction de leurs valeurs par dfaut lorsque le serveur sarrte. Si vous
souhaitez modifier une valeur doption chaque fois que le serveur est
dmarr, vous pouvez spcifier loption de serveur correspondante, le cas
chant.
Les options pouvant tre rinitialises sont les suivantes :

872
Chapitre 7. Fonctions et procdures systme

Nom doption Valeurs Par dfaut Option de ser-


veur

ConnsDisabled ON ou OFF OFF

LivenessTimeout Entier, en se- 120 Option de serveur


condes -tl

Procedure_- ON, OFF, RE- OFF


profiling SET, CLEAR

ProfileFilterConn id_connexion
ProfileFilterUser id_utilisateur
QuittingTime Date et heure Option de serveur
correctes -tq

RememberLastS- ON ou OFF OFF Option de serveur


tatement -zl

RequestFilter- id_connexion, -1
Conn

RequestFilterDB id_base_de_-
donnes, -1
RequestLogFile Nom de fichier Option de serveur
-zo

RequestLogging ALL, SQL, NONE Option de serveur


NONE, -zr
SQL+hostvars

RequestLogMax- taille_fichier, en Option de serveur


Size octets -zs

RequestLo- entier Option de serveur


gNumFIles -zn

ConnsDisabled Lorsque cette option est active (ON), aucune autre


connexion une base de donnes du serveur de base de donnes nest
autorise.
LivenessTimeout Un paquet dit dactivit est envoy rgulirement via un
rseau TCP/IP ou SPX client/serveur pour confirmer quune connexion est
intacte. Si le serveur rseau fonctionne pendant la temporisation dactivit
(LivenessTimeout) du client sans dtecter de paquet dactivit, la
communication est interrompue.

873
Pour plus dinformations, reportez-vous la section Option de serveur
-tl [ASA - Guide dadministration, page 177].
Procedure_profiling Contrle le profilage des procdures pour les
procdures stockes, les fonctions, les vnements et les triggers. Le
profilage de procdure indique la dure dexcution des procdures stockes,
des fonctions, des vnements et des triggers ainsi que la dure dexcution
de chaque ligne. Vous pouvez galement dfinir les options de profilage de
procdure sur la feuille de proprits de base de donnes dans Sybase
Central.

ON active le profilage des procdures pour la base de donnes laquelle


vous tes actuellement connect.
OFF dsactive le profilage des procdures et garde les donnes de
profilage disponibles des fins de consultation.
RESET remet les compteurs de profilage zro sans intervenir sur le
paramtre ON ou OFF.
CLEAR remet les compteurs de profilage zro et dsactive le profilage
des procdures.
Une fois le profilage activ, vous pouvez utiliser les procdures stockes
sa_procedure_profile_summary et sa_procedure_profile pour extraire des
informations de profilage de la base de donnes.
Pour plus dinformations sur le profilage des procdures, reportez-vous
la section Profilage des procdures de base de donnes [ASA - Guide de
lutilisateur SQL, page 220].
ProfileFilterConn Demande au serveur de base de donnes de capturer les
informations de profilage pour un ID de connexion spcifique.
ProfileFilterUser Demande au serveur de base de donnes de capturer les
informations de profilage pour un ID dutilisateur spcifique.
QuittingTime Demande au serveur de base de donnes de sarrter
lheure indique.
Pour plus dinformations, reportez-vous la section Option de serveur
-tq [ASA - Guide dadministration, page 178].
RememberLastStatement Demande au serveur de base de donnes
dextraire la dernire instruction SQL prpare pour chaque connexion aux
bases de donnes du serveur. Pour les appels de procdure stocke, seul
lappel de procdure le moins imbriqu apparat.

874
Chapitre 7. Fonctions et procdures systme

Vous pouvez obtenir la valeur courante du paramtre


RememberLastStatement en utilisant la fonction de proprit
RememberLastStatement comme suit :
SELECT property( RememberLastStatement )

Pour plus dinformations, reportez-vous aux sections Proprits de


niveau serveur [ASA - Guide dadministration, page 788] et Option de serveur
-zl [ASA - Guide dadministration, page 186].
Lorsque le paramtre RememberLastStatement est activ, linstruction
suivante renvoie la dernire instruction prpare pour la connexion spcifie :
SELECT connection_property( LastStatement, conn_id )

La procdure stocke sa_conn_activity renvoie cette mme information pour


toutes les connexions.

Attention
Lorsque -zl est spcifie ou lorsque le paramtre de serveur Remem-
berLastStatement est activ, nimporte quel utilisateur peut appeler la
procdure systme sa_conn_activity ou obtenir la valeur de la proprit de
connexion LastStatement afin de trouver linstruction SQL la plus rcente
pour tout autre utilisateur. Il convient dutiliser cette option avec prcaution
et de la dsactiver lorsquelle nest pas ncessaire.
RequestFilterConn Filtre les informations de consignation concernant les
demandes afin que seules les informations relatives une connexion
particulire soient consignes. Cette opration permet de rduire la taille du
journal des demandes lors du contrle dun serveur comptant de nombreuses
connexions actives ou plusieurs bases de donnes. Vous pouvez obtenir lID
de connexion en excutant linstruction suivante :
CALL sa_conn_info()

Pour spcifier une connexion particulire consigner aprs obtention de lID


de connexion, excutez linstruction suivante :
CALL sa_server_option( RequestFilterConn, connection-id )

Le filtrage reste en vigueur jusqu ce quil soit explicitement rinitialis ou


jusqu larrt du serveur de base de donnes. Pour rinitialiser le filtrage,
utilisez linstruction suivante :
CALL sa_server_option( RequestFilterConn, -1)

RequestFilterDB Filtre les informations de consignation concernant les


demandes afin que seules les informations relatives une base de donnes

875
particulire soient consignes. Cette opration permet de rduire la taille du
journal des demandes lors du contrle dun serveur comptant de nombreuses
connexions actives ou plusieurs bases de donnes. Une fois connect la
base de donnes souhaite, vous pouvez obtenir lID de base de donnes en
excutant linstruction suivante :
SELECT connection_property( DBNumber )

Pour indiquer de ne consigner que les informations relatives une base de


donnes particulire, excutez linstruction suivante :
CALL sa_server_option( RequestFilterDB, database-id )

Le filtrage reste en vigueur jusqu ce quil soit explicitement rinitialis ou


jusqu larrt du serveur de base de donnes. Pour rinitialiser le filtrage,
utilisez linstruction suivante :
CALL sa_server_option( RequestFilterDB, -1 )

RequestLogFile Nom du fichier utilis pour enregistrer les informations


de consignation. Le nom NULL met fin la consignation dans le fichier.
Tout caractre barre oblique inverse (\) doit tre doubl dans le nom de
fichier car il sagit dune chane SQL.
Pour plus dinformations, reportez-vous la section Option de serveur
-zo [ASA - Guide dadministration, page 188].
RequestLogging Les valeurs possibles sont ALL, SQL, NONE ou
SQL+hostvars. ALL quivaut ON. NONE quivaut OFF. Cet appel
active la consignation des instructions SQL individuelles envoyes au
serveur de base de donnes, des fins de dtection et de rsolution des
problmes, conjointement avec les options -zr et -zo du serveur de base de
donnes.
Lorsque vous attribuez la valeur OFF RequestLogging, le journal des
demandes est ferm.
Si vous slectionnez SQL, seuls les types de demande suivants sont
enregistrs :

START DATABASE

STOP ENGINE
STOP DATABASE
prparation dinstruction
xcution dinstruction

876
Chapitre 7. Fonctions et procdures systme

instructions EXECUTE IMMEDIATE


dfinitions doption

instructions COMMIT

instructions ROLLBACK
oprations PREPARE TO COMMIT

connexions

dconnexions
dbuts de transactions

instruction DROP STATEMENT


explications du curseur
fermetures du curseur
reprise du curseur
erreurs

Lattribution de la valeur SQL+hostvars RequestLogging gnre la fois


des valeurs SQL (comme si vous aviez indiqu [RequestLogging,
SQL]) et des valeurs de variables hte dans le journal.
Vous pouvez trouver la valeur courante du paramtre RequestLogging au
moyen de property(RequestLogging).
Pour plus dinformations, reportez-vous aux sections Option de serveur
-zr [ASA - Guide dadministration, page 189] et Proprits de niveau serveur
[ASA - Guide dadministration, page 788].

RequestLogMaxSize Taille maximale (en octets) du fichier utilis pour


enregistrer les informations de consignation.
Lorsque le journal des demandes atteint la taille spcifie par la procdure
systme sa_server_option ou par loption de serveur -zs, le fichier est
renomm avec lextension .old et remplace un fichier existant du mme
nom, le cas chant. Le journal des demandes est ensuite relanc.
Pour plus dinformations, reportez-vous la section Option de serveur
-zs [ASA - Guide dadministration, page 189].
RequestLogNumFIles Nombre dexemplaires du journal des demandes
conserver.

877
Si la consignation des informations sur les demandes est active pendant
longtemps, le fichier peut devenir important. Loption zn permet de dfinir
le nombre dexemplaires du journal des demandes conserver.
Pour plus dinformations, reportez-vous la section Option de serveur
-zn [ASA - Guide dadministration, page 187].
Autorisations Les droits DBA sont requis
Effets secondaires Aucun
Exemple Linstruction suivante dsactive les nouvelles connexions au serveur de base
de donnes :
CALL sa_server_option( ConnsDisabled, ON)

Procdure systme sa_set_http_header


Fonction Permettre un service Web de dfinir un en-tte HTTP dans le rsultat.
Syntaxe sa_set_http_header ( nom_champ, valeur )

Arguments nom_champ Paramtre char(128) indiquant une chane contenant le


nom de lun des champs den-tte HTTP.
valeur Paramtre long varchar spcifiant la valeur laquelle le
paramtre nomm devrait tre dfini.
Remarques La dfinition du champ den-tte spcial @HttpStatus dfinit le code dtat
renvoy avec la requte. Par exemple, la commande suivante dfinit le code
dtat 404 Introuvable.
call dbo.sa_set_http_header( @HttpStatus, 404 )

Le corps du message derreur est insr automatiquement. Seuls des codes


derreur HTTP corrects peuvent tre utiliss. Attribuer un code incorrect
ltat entrane une erreur SQL.
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Procdure systme sa_set_http_option la page 879
Exemple Lexemple suivant attribue au champ de len-tte Content-Type la valeur
text/html :
call dbo.sa_set_http_header( Content-Type, text/html )

878
Chapitre 7. Fonctions et procdures systme

Procdure systme sa_set_http_option


Fonction Permettre un service Web de dfinir une option HTTP dans le rsultat.
Syntaxe sa_set_http_option ( nom_option, valeur )

Arguments nom_option Paramtre char(128) indiquant une chane contenant le


nom de lune des options HTTP.

valeur Paramtre long varchar spcifiant la valeur laquelle loption


nomme devrait tre dfinie.
Remarques Utilisez cette procdure dans des instructions ou procdures qui grent les
services Web, afin de dfinir des options dans un jeu de rsultats HTTP.
Une seule option est admise pour linstant :

CharsetConversion Dtermine si le jeu de rsultats doit


automatiquement tre converti du jeu de caractres de la base de donnes
celui du client. Les seules valeurs autorises sont ON et OFF. La valeur
par dfaut est ON.
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Procdure systme sa_set_http_header la page 878

Procdure systme sa_statement_text


Fonction Formater une instruction SELECT de sorte que chaque lment figure sur
une ligne distincte. Cette procdure est particulirement utile pour visualiser
des instructions longues du journal des demandes, dans lequel les caractres
de nouvelle ligne sont supprims.
Syntaxe sa_statement_text ( instruction_select )

Argument instruction_select Paramtre long varchar contenant une instruction


select.
Remarques Linstruction_select indique doit tre une chane (entre apostrophes) ou une
expression de chane.
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Procdure systme sa_get_request_times la page 838
Procdure systme sa_get_request_profile la page 837

879
Exemple Lappel suivant formate une instruction SELECT de sorte que chaque
lment figure sur une ligne distincte.
CALL sa_statement_text(SELECT * FROM car WHERE name=Audi)

stmt_text

1 select *

2 FROM car
3 WHERE name = Audi

Procdure systme sa_table_fragmentation


Fonction Gnrer un rapport sur la fragmentation des tables de la base de donnes.
Syntaxe sa_table_fragmentation (
[ nom_table
[, nom_propritaire ] ]
)

Arguments nom_table Paramtre char(128) spcifiant un nom de table.


nom_propritaire Paramtre char(128) spcifiant un nom de
propritaire.
Jeux de rsultats

Nom de colonne Type de donnes Description

TableName char(128) Nom de la table.

rows unsigned integer Nombre de lignes dans


la table.

row_segments unsigned bigint Nombre de segments de


lignes dans la table.

segs_per_row double Nombre de segments


par ligne.
Remarques Cette procdure permet aux administrateurs de base de donnes dobtenir
des informations sur la fragmentation des tables dune base de donnes. En
labsence darguments spcifis, les rsultats de chaque table de la base de
donnes sont indiqus.
Lorsque la fragmentation des tables de la base de donnes est trop
importante, vous pouvez excuter linstruction REORGANIZE TABLE ou
recrer la base de donnes pour rduire cette fragmentation et amliorer les
performances.

880
Chapitre 7. Fonctions et procdures systme

Autorisations Les droits DBA sont requis


Effets secondaires Aucun
Voir aussi Fragmentation des tables [ASA - Guide de lutilisateur SQL, page 216]
Dfragmentation des tables [ASA - Guide de lutilisateur SQL, page 217]
Reconstruction dune base de donnes [ASA - Guide de lutilisateur SQL,
page 624]
Instruction REORGANIZE TABLE la page 604

Procdure systme sa_table_page_usage


Fonction Gnrer un rapport sur lutilisation des pages des tables de la base de
donnes.
Syntaxe sa_table_page_usage ( )

Jeux de rsultats

Nom de colonne Type de donnes Description

TableId unsigned integer ID de la table.

TablePages integer Nombre total de pages


de table utilises par
cette table.
PctUsedT integer Pourcentage despace de
page de table utilis.
IndexPages integer Nombre de pages din-
dex utilises par cette
table.

PctUsedI integer Pourcentage despace de


page dindex utilis.

PctOfFile integer Pourcentage du fichier


total de base de donnes
occup par la table.

TableName char(128) Nom de la table.


Remarques Les rsultats fournis comprennent les mmes informations que celles
donnes par lutilitaire Informations.
Autorisations Les droits DBA sont requis
Effets secondaires Aucun
Voir aussi Utilitaire Informations [ASA - Guide dadministration, page 575]

881
Procdure systme sa_validate
Fonction Valider toutes les tables dune base de donnes.
Syntaxe sa_validate (
[ nom_table
[, nom_propritaire
[, type_vrif ] ] ] )

Arguments nom_table Paramtre varchar(128) spcifiant un nom de table. Si ce


paramtre est NULL (valeur par dfaut), sa_validate valide toutes les
tables.

nom_propritaire Paramtre varchar(128) spcifiant un nom de


propritaire. Si ce paramtre est NULL (valeur par dfaut), sa_validate
valide les tables de tous les utilisateurs.
type_vrif Lorsque ce paramtre char(10) est NULL (valeur par
dfaut), chaque table est vrifie laide dune instruction VALIDATE
TABLE, sans vrification supplmentaire. Les valeurs type_vrif admises
sont les suivantes :
donnes Valide les tables avec WITH DATA CHECK.
index Valide les tables avec WITH INDEX CHECK.
full Valide les tables avec WITH FULL CHECK.
express Valide les tables avec WITH EXPRESS CHECK.
checksum Valide les pages de base de donnes laide de checksum.
Pour plus dinformations sur la validation par checksum, reportez-vous
la section Vrification de la validit de la base de donnes [ASA -
Guide dadministration, page 424].

Autorisations Les droits DBA sont requis


Effets secondaires Aucun
Remarques Cette procdure quivaut appeler linstruction VALIDATE TABLE pour
chaque table de la base de donnes.
Pour plus dinformations, reportez-vous la section Instruction
VALIDATE TABLE la page 695.
Toutes les valeurs des arguments nom_table, nom_propritaire et type_vrif
sont des chanes et doivent donc tre places entre guillemets.
Cette procdure renvoie une seule colonne nomme Messages. Si toutes les
tables sont correctes, la colonne contient le message Aucune erreur
dtecte.

882
Chapitre 7. Fonctions et procdures systme

Attention
La validation dune table ou dune base de donnes entire ne peut inter-
venir quen labsence dune connexion apportant des modifications la
base de donnes. Dans le cas contraire, des erreurs indiquant une forme
quelconque de corruption de la base de donnes risquent dtre signales
tort.
Exemple Linstruction suivante valide toutes les tables qui appartiennent au DBA et en
vrifie les index :
CALL sa_validate (owner_name = DBA, check_type = index)

Procdure systme sa_verify_password


Fonction Valider le mot de passe de lutilisateur courant.
Syntaxe sa_verify_password ( chane )

Argument chane Paramtre char(128) spcifiant le mot de passe de lutilisateur


courant de la base de donnes.
Remarques Cette procdure est utilise par sp_password. Si le mot de passe correspond,
la procdure est simplement renvoye. Sil ne correspond pas, lerreur Le
mot de passe ou lID utilisateur est incorrect est renvoye.

Autorisations Aucune
Effets secondaires Aucun
Voir aussi Procdures systme Adaptive Server Enterprise la page 906

Procdure systme sp_login_environment


Fonction Dfinir les options de connexion pour les utilisateurs qui se connectent.
Syntaxe sp_login_environment ( )

Remarques sp_login_environment est la procdure par dfaut appele par loption de


base de donnes LOGIN_PROCEDURE.
Il est recommand de ne pas modifier cette procdure. En revanche, pour
modifier lenvironnement de connexion, paramtrez loption
LOGIN_PROCEDURE pour pointer sur une autre procdure.
Voici le texte de la procdure sp_login_environment :

883
CREATE PROCEDURE dbo.sp_login_environment()
BEGIN
IF connection_property(CommProtocol)=TDS THEN
CALL dbo.sp_tsql_environment()
END IF
END

Autorisations Aucune
Effets secondaires Aucun
Voir aussi Option LOGIN_PROCEDURE [base de donnes] [ASA - Guide
dadministration, page 725]

Procdure systme sp_remote_columns


Fonction Fournir une liste de colonnes dans une table distante, ainsi quune
description de leurs types de donnes.
Pour pouvoir utiliser cette procdure systme, le serveur doit tre dfini
laide de linstruction CREATE SERVER.
Syntaxe sp_remote_columns (
@nom_serveur ,
@nom_table
[, @propritaire_table
[, @qualificatif_table] ]
)

Arguments @nom_serveur Paramtre char(128) indiquant une chane contenant


le nom du serveur comme indiqu par linstruction CREATE SERVER.

@nom_table Paramtre char(128) spcifiant un nom de table.


@propritaire_table Paramtre char(128) facultatif spcifiant le
propritaire de la table.
@qualificatif_table Paramtre char(128) facultatif spcifiant le nom de
la base de donnes.
Jeux de rsultats

Nom de colonne Type de donnes Description

database char(128) Nom de la base de don-


nes

owner char(128) Nom du propritaire de


la base de donnes.

table_name char(128) Nom de la table.

884
Chapitre 7. Fonctions et procdures systme

Nom de colonne Type de donnes Description

column_name char(128) Nom dune colonne.

domain_id smallint Paramtre entier indi-


quant le type de donnes
de la colonne.

width smallint La signification de ce


champ dpend du type
de donnes. Pour les
types de caractres, la
largeur reprsente le
nombre de caractres.

scale smallint La signification de ce


champ dpend du type
de donnes. Pour les
types de donnes nu-
mriques, lchelle cor-
respond au nombre de
chiffres aprs la virgule.

nullable smallint Si les valeurs de colonne


NULL sont autorises,
ce champ est 1. Sinon la
valeur est 0.

Remarques Si vous saisissez une instruction CREATE EXISTING et que vous indiquez
une liste de colonnes, il pourrait tre utile dobtenir la liste des colonnes
disponibles sur une table distante. sp_remote_columns vous permet
dobtenir une liste des colonnes sur une table distante, ainsi quune
description de leurs types de donnes. Si vous spcifiez une base de donnes,
vous devez soit dsigner un propritaire, soit indiquer la valeur null.
Normes et compatibilit Sybase Prise en charge par Open Client/Open Server.

Autorisations Aucune
Effets secondaires Aucun
Voir aussi Accs aux donnes distantes [ASA - Guide de lutilisateur SQL, page 647]
Classes de serveurs pour laccs aux donnes distantes [ASA - Guide de
lutilisateur SQL, page 681]
Instruction CREATE SERVER la page 409
Exemple Lexemple ci-aprs renvoie les colonnes de la table SYSOBJECTS de la

885
base de donnes production stocke sur un serveur Adaptive Server
Enterprise nomm asetest. Aucun propritaire na t dsign.
CALL sp_remote_columns( asetest, sysobjects,
null, production )

Procdure systme sp_remote_exported_keys


Fonction Fournir des informations lies aux tables avec des cls trangres sur une
table primaire spcifie.
Pour pouvoir utiliser cette procdure systme, le serveur doit tre dfini
laide de linstruction CREATE SERVER.
Syntaxe sp_remote_exported_keys (
@nom_serveur ,
@nom_ps
[, @propritaire_ps
[, @qualificatif_ps ] ]
)

Arguments @nom_serveur Paramtre char(128) indiquant le serveur sur lequel se


trouve la table primaire. Une valeur doit tre obligatoirement fournie
pour ce paramtre.
@nom_ps Paramtre char(128) spcifiant la table contenant la cl
primaire. Une valeur doit tre obligatoirement fournie pour ce paramtre.

?@propritaire_ps Paramtre char(128) facultatif spcifiant le


propritaire de la table primaire.

@qualificatif_ps Paramtre char(128) facultatif spcifiant la base de


donnes contenant la table primaire. Ce paramtre est facultatif.

Jeux de rsultats

Nom de colonne Type de donnes Description

pk_database char(128) Base de donnes conte-


nant la table avec cl
primaire.

pk_owner char(128) Propritaire de la table


avec cl primaire.

pk_table char(128) Table avec cl primaire.


pk_column char(128) Nom de la colonne cl
primaire.

886
Chapitre 7. Fonctions et procdures systme

Nom de colonne Type de donnes Description

fk_database char(128) Base de donnes conte-


nant la table avec cl
trangre.
fk_owner char(128) Propritaire de la table
avec cl trangre.
fk_table char(128) Table avec cl trangre.

fk_column char(128) Nom de la colonne cl


trangre.

key_seq smallint Numro de squence de


la cl.

fk_name char(128) Nom de la cl trangre.

pk_name char(128) Nom de la cl primaire.

Remarques Cette procdure fournit des informations au sujet des tables distantes qui
possdent une cl trangre sur une table primaire spcifique. Le jeu de
rsultats de la procdure stocke sp_remote_exported_keys contient les
informations de base de donnes, de propritaire, de table, de colonne et de
nom pour les deux cls, primaire et trangre, ainsi que la squence cl
trangre pour les colonnes correspondantes. Le jeu de rsultats peut varier
en fonction des appels ODBC et JDBC sous-jacents, mais des informations
sur la table et la colonne dune cl trangre sont toujours renvoyes.
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Instruction CREATE SERVER la page 409
Tables lies par des cls trangres [Prsentation de SQL Anywhere Studio,
page 130]

Exemple Linstruction suivante permet dobtenir des informations sur les tables
distantes comportant des cls trangres sur la table SYSOBJECTS, dans la
base de donnes production stocke sur un serveur nomm asetest :
CALL sp_remote_exported_keys (
@server_name=asetest,
@sp_name=sysobjects,
@sp_qualifier=production)

887
Procdure systme sp_remote_imported_keys
Fonction Fournir des informations sur les tables distantes contenant des cls primaires
qui correspondent une cl trangre spcifique.
Pour pouvoir utiliser cette procdure systme, le serveur doit tre dfini
laide de linstruction CREATE SERVER.
Syntaxe sp_remote_imported_keys ( @nom_serveur ,
@nom_ps
[, @propritaire_ps
[, @qualificatif_ps ] ]
)

Arguments @nom_serveur Paramtre char(128) facultatif indiquant le serveur sur


lequel se trouve la table avec cl trangre. Une valeur doit tre
obligatoirement fournie pour ce paramtre.
@nom_ps Paramtre char(128) facultatif spcifiant la table contenant
la cl trangre. Une valeur doit tre obligatoirement fournie pour ce
paramtre.
@propritaire_ps Paramtre char(128) facultatif spcifiant le
propritaire de la table avec cl trangre.
@qualificatif_ps Paramtre char(128) facultatif spcifiant la base de
donnes contenant la table avec cl trangre.
Jeux de rsultats

Nom de colonne Type de donnes Description

pk_database char(128) Base de donnes conte-


nant la table avec cl
primaire.

pk_owner char(128) Propritaire de la table


avec cl primaire.

pk_table char(128) Table avec cl primaire.

pk_column char(128) Nom de la colonne cl


primaire.

fk_database char(128) Base de donnes conte-


nant la table avec cl
trangre.

fk_owner char(128) Propritaire de la table


avec cl trangre.

888
Chapitre 7. Fonctions et procdures systme

Nom de colonne Type de donnes Description

fk_table char(128) Table avec cl trangre.

fk_column char(128) Nom de la colonne cl


trangre.

key_seq smallint Numro de squence de


la cl.

fk_name char(128) Nom de la cl trangre.

pk_name char(128) Nom de la cl primaire.

Remarques Les cls trangres rfrencent une ligne dune table distincte qui contient la
cl primaire correspondante. Cette procdure permet dobtenir la liste des
tables distantes possdant des cls primaires qui correspondent une table
trangre spcifique. Le jeu de rsultats de sp_remote_imported_keys
contient les informations de base de donnes, de propritaire, de table, de
colonne et de nom pour les deux cls, primaire et trangre, ainsi que la
squence cl trangre pour les colonnes correspondantes. Le jeu de
rsultats peut varier selon les appels ODBC et JDBC sous-jacents, mais des
informations sur la table et la colonne dune cl primaire sont toujours
renvoyes.
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Instruction CREATE SERVER la page 409
Tables lies par des cls trangres [Prsentation de SQL Anywhere Studio,
page 130]
Exemple Linstruction suivante permet dobtenir des informations sur les tables
contenant des cls primaires correspondant une cl trangre de la table
SYSOBJECTS sur le serveur asetest :
CALL sp_remote_imported_keys (
@server_name=asetest,
@sp_name=sysobjects,
@sp_qualifier=production)

Procdure systme sp_remote_primary_keys


Fonction Fournir des informations de cl primaire sur les tables distantes laide dun
accs aux donnes distance.

889
Syntaxe sp_remote_primary_keys (
@nom_serveur
[, @nom_table
[, @propritaire_table
[, @qualificatif_table ] ] ]
)

Arguments @nom_serveur Paramtre char(128) spcifiant le serveur sur lequel se


trouve la table distante.
@nom_table Paramtre char(128) facultatif spcifiant la table distante.
@propritaire_table Paramtre char(128) facultatif spcifiant le
propritaire de la table distante.
@qualificatif_table Paramtre char(128) facultatif spcifiant le nom de
la base de donnes distante.

Jeux de rsultats

Nom de colonne Type de donnes Description

database char(128) Nom de la base de don-


nes distante.

owner char(128) Propritaire de la table


distante.

table_name char(128) Table distante.

column_name char(128) Nom de la colonne.

key_seq smallint Numro de squence de


la cl primaire.

pk_name char(128) Nom de la cl primaire.


Remarques Cette procdure stocke fournit des informations de cl primaire sur les
tables distantes laide dun accs aux donnes distance.
En raison des diffrences existant dans les appels ODBC/JDBC sous-jacents,
les informations renvoyes quant la valeur du catalogue/de la base de
donnes diffrent lgrement selon la classe daccs aux donnes distantes
qui est attribue au serveur. Cependant, les informations importantes (par
exemple, le nom de colonne) correspondent bien aux attentes.
Normes et compatibilit Sybase Prise en charge par Open Client/Open Server.
Autorisations Aucune
Effets secondaires Aucun

890
Chapitre 7. Fonctions et procdures systme

Procdure systme sp_remote_tables


Fonction Renvoyer la liste des tables dun serveur.
Pour pouvoir utiliser cette procdure systme, le serveur doit tre dfini
laide de linstruction CREATE SERVER.
Syntaxe sp_remote_tables (
@nom_serveur
[, @nom_table
[, @propritaire_table
[, @qualificatif_table
[, @avec_type_table ] ] ] ]
)

Arguments @nom_serveur Paramtre char(128) spcifiant le serveur sur lequel se


trouve la table distante.
@nom_table Paramtre char(128) spcifiant la table distante.
@propritaire_table Paramtre char(128) spcifiant le propritaire de
la table distante.
@qualificatif_table Paramtre char(128) spcifiant la base de donnes.
@avec_type_table Spcifie le type de la table distante. Cet argument
est de type binaire et accepte deux valeurs, 0 (par dfaut) et 1. Vous devez
saisir la valeur 1 si vous souhaitez que le jeu de rsultats contienne une
colonne rpertoriant les types de table.
Jeux de rsultats

Nom de colonne Type de donnes Description

database char(128) Nom de la base de don-


nes distante.

owner char(128) Nom du propritaire


de la base de donnes
distante.

table_name char(128) Table distante.

table_type char(128) Spcifie le type de table.


La valeur de ce champ
dpend du type de ser-
veur distant. TABLE,
VIEW, SYS et GBL
TEMP sont par exemple
des valeurs possibles.

891
Remarques Lorsque vous configurez votre serveur de base de donnes, il peut tre utile
de disposer de la liste des tables distantes disponibles sur un serveur donn.
Cette procdure renvoie la liste des tables dun serveur.
La procdure accepte cinq paramtres. Si un nom de table, de propritaire ou
de base de donnes est spcifi, la liste est limite aux tables qui
correspondent ces arguments.
Normes et compatibilit Sybase Prise en charge par Open Client/Open Server.
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Accs aux donnes distantes [ASA - Guide de lutilisateur SQL, page 647]
Classes de serveurs pour laccs aux donnes distantes [ASA - Guide de
lutilisateur SQL, page 681]
Instruction CREATE SERVER la page 409
Exemples Linstruction suivante permet dobtenir la liste de toutes les feuilles de calcul
Microsoft Excel disponibles sur une source de donnes ODBC rfrence
par un serveur nomm excel :
call sp_remote_tables ( excel )

Linstruction suivante permet dobtenir la liste de toutes les tables


appartenant fred dans la base de donnes production stocke sur un serveur
Adaptive Server Enterprise nomm asetest :
call sp_remote_tables ( asetest, null, fred, production )

Procdure systme sp_servercaps


Fonction Afficher des informations relatives aux fonctionnalits dun serveur distant.
Pour pouvoir utiliser cette procdure systme, le serveur doit tre dfini
laide de linstruction CREATE SERVER.
Syntaxe sp_servercaps ( nom_serveur )

Argument nom_serveur Paramtre char(64) spcifiant un serveur dfini par


linstruction CREATE SERVER.
Remarques Cette procdure affiche des informations relatives aux fonctionnalits dun
serveur distant. Adaptive Server Anywhere se sert des ces informations pour
dterminer le pourcentage dune instruction SQL qui peut tre transmis un
serveur distant. Les tables systme contenant les fonctionnalits dun serveur
distant ne sont pas remplies tant quAdaptive Server Anywhere ne sest pas
connect une premire fois ce serveur. Ces informations proviennent de

892
Chapitre 7. Fonctions et procdures systme

SYSCAPABILITY et SYSCAPABILITYNAME. Le nom de serveur spcifi


doit tre celui utilis dans linstruction CREATE SERVER.
Normes et compatibilit Sybase Prise en charge par Open Client/Open Server.
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Accs aux donnes distantes [ASA - Guide de lutilisateur SQL, page 647]
Classes de serveurs pour laccs aux donnes distantes [ASA - Guide de
lutilisateur SQL, page 681]
Instruction CREATE SERVER la page 409
Exemple Pour afficher des informations relatives au serveur distant testasa :
CALL sp_servercaps ( testasa )

Procdure systme sp_tsql_environment


Fonction Paramtrer les options de connexion lors de la connexion des utilisateurs
partir des applications jConnect ou Open Client.
Syntaxe sp_tsql_environment ( )

Remarques La procdure sp_login_environment est appele par dfaut par loption de


base de donnes LOGIN_PROCEDURE. Pour chaque nouvelle connexion,
la procdure spcifie par LOGIN_PROCEDURE est appele. Si la
connexion utilise le protocole de communication TDS (c.--d. sil sagit
dune connexion Open Client ou jConnect), sp_login_environment appelle
son tour sp_tsql_environment.
Cette procdure paramtre les options de base de donnes pour les rendre
compatibles avec le fonctionnement de Sybase Adaptive Server Enterprise
par dfaut.
Si vous souhaitez modifier le fonctionnement par dfaut, il est recommand
de crer de nouvelles procdures et de modifier loption
LOGIN_PROCEDURE pour pointer sur ces nouvelles procdures.
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Procdure systme sp_login_environment la page 883
Option LOGIN_PROCEDURE [base de donnes] [ASA - Guide
dadministration, page 725].

Exemple Voici le texte de la procdure sp_tsql_environment :

893
CREATE PROCEDURE dbo.sp_tsql_environment()
BEGIN
IF db_property(IQStore)=OFF THEN
-- ASA datastore
SET TEMPORARY OPTION AUTOMATIC_TIMESTAMP=ON
END IF;
SET TEMPORARY OPTION ANSINULL=OFF;
SET TEMPORARY OPTION TSQL_VARIABLES=ON;
SET TEMPORARY OPTION ANSI_BLANKS=ON;
SET TEMPORARY OPTION TSQL_HEX_CONSTANT=ON;
SET TEMPORARY OPTION CHAINED=OFF;
SET TEMPORARY OPTION QUOTED_IDENTIFIER=OFF;
SET TEMPORARY OPTION ALLOW_NULLS_BY_DEFAULT=OFF;
SET TEMPORARY OPTION FLOAT_AS_DOUBLE=ON;
SET TEMPORARY OPTION ON_TSQL_ERROR=CONTINUE;
SET TEMPORARY OPTION ISOLATION_LEVEL=1;
SET TEMPORARY OPTION DATE_FORMAT=YYYY-MM-DD;
SET TEMPORARY OPTION TIMESTAMP_FORMAT=YYYY-MM-DD
HH:NN:SS.SSS;
SET TEMPORARY OPTION TIME_FORMAT=HH:NN:SS.SSS;
SET TEMPORARY OPTION DATE_ORDER=MDY;
SET TEMPORARY OPTION ESCAPE_CHARACTER=OFF
SET TEMPORARY OPTION CLOSE_ON_ENDTRANS=OFF
END

894
Chapitre 7. Fonctions et procdures systme

Procdures systme stockes tendues


Les bases de donnes Adaptive Server Anywhere comprennent un ensemble
de procdures systme tendues. Ces procdures sont la proprit de
lutilisateur dbo. Les utilisateurs doivent disposer de lautorisation
EXECUTE pour pouvoir utiliser ces procdures, sauf sils bnficient dj
de droits DBA.
Les sections suivantes dcrivent chacune de ces procdures stockes.

Procdures stockes tendues pour MAPI et SMTP


Adaptive Server Anywhere comprend des procdures systme permettant
denvoyer du courrier lectronique via la norme MAPI (Microsoft
Messaging API) ou le protocole Internet SMTP (Simple Mail Transfer
Protocol). Ces procdures systme sont mises en oeuvre comme des
procdures stockes tendues : chacune delles appelle une fonction dune
DLL externe.
Pour utiliser les procdures stockes MAPI ou SMTP, vous devez disposer
dun systme de courrier lectronique MAPI ou SMTP accessible depuis le
serveur de base de donnes.
Les procdures stockes sont les suivantes :
xp_startmail Ouvre une session dans un compte courrier donn en se
connectant au systme de messagerie MAPI.
xp_startsmtp Ouvre une session dans un compte courrier donn en se
connectant au systme de messagerie SMTP.
xp_sendmail Envoie un courrier lectronique aux utilisateurs spcifis.
xp_stopmail Ferme la session MAPI.
xp_stopsmtp Ferme la session SMTP.
La procdure ci-aprs permet de signaler lexcution dune sauvegarde un
groupe de personnes.
CREATE PROCEDURE notify_backup()
BEGIN
CALL xp_startmail( mail_user=ServerAccount,
mail_password=ServerPassword
);
CALL xp_sendmail( recipient=IS Group,
subject=Backup,
"message"=Backup completed
);
CALL xp_stopmail( )
END

895
Les sections suivantes prsentent en dtail chacune des procdures systme
de messagerie.

Procdure systme xp_startmail

Fonction Dmarrer une session de messagerie sous MAPI.


Syntaxe [ [ variable = ] CALL ] xp_startmail (
[ mail_user = nom_login_courrier ]
[, mail_password = mot_de_passe_courrier ] )

Arguments utilisateur_courrier Paramtre long varchar indiquant le nom de login


MAPI.
mot_de_passe_courrier Paramtre long varchar indiquant le mot de
passe MAPI.
Autorisations Procdure non prise en charge sur NetWare.
Remarques xp_startmail est une procdure systme stocke qui dmarre une session de
courrier lectronique.
Si vous utilisez Microsoft Exchange, sachez que largument
nom_login_courrier est un nom de profil Exchange ; il est donc inutile
dinclure un mot de passe dans lappel de procdure.
Codes de retour Pour obtenir une liste des codes de retour, reportez-vous la section
Les codes de retour MAPI la page 899.

Procdure systme xp_startsmtp

Fonction Dmarrer une session de messagerie sous SMTP.


Syntaxe [ [ variable = ] CALL ] xp_startsmtp (
smtp_sender = adresse_email,
smtp_server = serveur_smtp
[ , smtp_port = numro_port ]
[ , timeout = dlai ] )

Arguments metteur_smtp Paramtre long varchar spcifiant ladresse


lectronique de lmetteur.
serveur_smtp Paramtre long varchar spcifiant le serveur SMTP
utiliser et correspondant au nom du serveur ou ladresse IP.
port_smtp Paramtre entier indiquant le numro de port auquel se
connecter sur le serveur SMTP. La valeur par dfaut est 25.
dlai Ce paramtre entier indique le dlai dattente (en secondes) dune
rponse du serveur avant que lappel courant xp_sendmail ne soit
abandonn. La valeur par dfaut est de 60 secondes.

896
Chapitre 7. Fonctions et procdures systme

Autorisations Procdure non prise en charge sur NetWare.


Remarques xp_startsmtp est une procdure systme stocke qui dmarre une session de
messagerie pour ladresse lectronique indique en se connectant un
serveur SMTP.
xp_startsmtp tablit une connexion un serveur. Cette connexion dpassera
le dlai imparti. Il est donc conseill de lancer SMTP juste avant dexcuter
xp_sendmail.
xp_sendmail sur SMTP ne prend pas en charge les pices jointes.
Codes de retour Pour obtenir une liste des codes de retour, reportez-vous la section
Les codes de retour SMTP la page 899.

Procdure systme xp_sendmail

Fonction Envoyer un message lectronique.


Syntaxe [ [ variable = ] CALL ] xp_sendmail (
recipient = adresse_lectronique
[, subject = objet ]
[, cc_recipient = adresse_lectronique ]
[, bcc_recipient = adresse_lectronique ]
[, "message" = texte_message ]
[, include_file = nom_fichier ] )

Arguments recipient Paramtre long varchar spcifiant ladresse lectronique du


destinataire.

subject Paramtre long varchar indiquant le champ dobjet du


message.
cc_recipient Paramtre long varchar indiquant le champ du
destinataire en copie du message.
bcc_recipient Paramtre long varchar indiquant le champ du
destinataire en copie cache du message.
message Paramtre long varchar indiquant le contenu du message.
include_file Paramtre long varchar indiquant un fichier joint.
Autorisations Vous devez avoir pralablement ouvert une session via xp_startmail sous
MAPI ou via xp_startsmtp sous SMTP.
Procdure non prise en charge sur NetWare.
Remarques xp_sendmail est une procdure systme stocke qui envoie un courrier
lectronique aux destinataires dsigns, une fois la session dmarre avec

897
xp_startmail ou xp_startsmtp. La procdure accepte des messages de
nimporte quelle longueur.
Les valeurs dargument sont des chanes. La longueur de chaque argument
nest limite que par la quantit de mmoire disponible sur le systme. Le
paramtre "message" doit figurer entre guillemets car MESSAGE est un
mot rserv.
Un fichier joint spcifi par include_file doit exister sur le serveur de base de
donnes.
xp_sendmail sur SMTP ne prend pas en charge les pices jointes.
Codes de retour Pour obtenir une liste des codes de retour, reportez-vous la section
Codes de renvoi pour procdures stockes MAPI et SMTP la page 899.
Exemple Lappel suivant envoie lID utilisateur SalesGroup un message auquel le
fichier prix.doc est associ en tant que pice jointe :
CALL xp_sendmail(recipient=Sales Group,
subject=New Pricing,
include_file = C:\\DOCS\\PRICES.DOC )

Procdure systme xp_stopmail

Fonction Fermer une session de messagerie MAPI.


Syntaxe [ variable = ] [ CALL ] xp_stopmail ()

Autorisations Procdure non prise en charge sur NetWare.


Remarques xp_stopmail est une procdure systme stocke qui termine une session de
courrier lectronique.
Codes de retour Pour obtenir une liste des codes de retour, reportez-vous la section
Les codes de retour MAPI la page 899.

Procdure systme xp_stopsmtp

Fonction Fermer une session de messagerie SMTP.


Syntaxe [ variable = ] [ CALL ] xp_stopsmtp ()

Autorisations Procdure non prise en charge sur NetWare.


Remarques xp_stopsmtp est une procdure systme stocke qui termine une session de
courrier lectronique.
Codes de retour Pour obtenir une liste des codes de retour, reportez-vous la section
Les codes de retour SMTP la page 899.

898
Chapitre 7. Fonctions et procdures systme

Codes de renvoi pour procdures stockes MAPI et SMTP

Les procdures stockes tendues pour MAPI et SMTP utilisent les codes de
renvoi ci-aprs.
Les codes de retour
MAPI
Code de retour Signification

0 Russite

2 Echec de xp_startmail

3 Echec de xp_stopmail

5 Echec de xp_sendmail
11 Destinataire mal dtermin

12 Pice jointe introuvable

13 Disque satur

14 Echec

15 Mmoire insuffisante
16 Session incorrecte

17 Texte trop long

18 Nombre de fichiers trop lev

19 Nombre de destinataires trop lev

20 Destinataire inconnu

21 Echec de login

22 Nombre de sessions trop lev

23 Abandon de lutilisateur

24 Pas dinterface MAPI

25 Pas de startmail

Les codes de retour


SMTP
Code de retour Signification

0 Russite

899
Code de retour Signification

100 Erreur de socket.

101 Expiration du dlai du socket.

102 Nom dhte du serveur SMTP impossible dterminer.

103 Connexion au serveur SMTP impossible.


104 Erreur du serveur ; rponse incomprhensible (le mes-
sage est mal format ou le serveur nest pas SMTP,
par exemple)

421 <domaine > Service non disponible, canal en fermeture.


450 Action non effectue : bote aux lettres non disponible

451 Action arrte : erreur de traitement.

452 Action non effectue : manque de ressources systme.

500 Erreur de syntaxe, commande non reconnue (il peut


sagir derreurs telles quune commande trop longue).

501 Erreur de syntaxe dans les paramtres ou arguments.

502 Commande non implmente.

503 Mauvaise squence de commandes.

504 Paramtre de commande non implment.

550 Action non effectue : bote aux lettres non disponible


(par exemple : bote aux lettres introuvable, absence
daccs ou aucun relais autoris).

551 Utilisateur non local ; essayer <route directe > (sans


relais automatique).

552 Action arrte : manque de ressources de stockage.

553 Action non effectue : nom de bote aux lettres non


autoris (syntaxe incorrecte, par exemple).

554 Echec de la transaction.

Autres procdures systme stockes tendues


Les autres procdures systme stockes tendues vous permettent dexcuter
des commandes systme. Vous pouvez par exemple les utiliser pour
effectuer des oprations sur des chanes et des E/S de fichiers.

900
Chapitre 7. Fonctions et procdures systme

Procdure systme xp_cmdshell

Fonction Excuter une commande du systme dexploitation partir dune procdure.


Syntaxe [ variable = CALL ] xp_cmdshell ( chane [ , no_output ] )

Arguments chane Paramtre char(254) spcifiant une commande systme.


no_output Si ce paramtre est la chane no_output, no output est
affich.
Remarques xp_cmdshell excute une commande systme, puis rend la main
lenvironnement dappel.
Par dfaut, output est affich. Si le deuxime paramtre est la chane
no_output, no output est affich.
Le deuxime paramtre ne concerne que les applications de console sous
Windows NT/2000/XP. Sous UNIX, aucun rsultat nest affich quelle que
soit la dfinition du second paramtre. Sous NetWare, toute commande
excute est visible sur la console du serveur quelle que soit la dfinition du
second paramtre.
Autorisations Aucune
Exemple Linstruction suivante permet dafficher la liste des fichiers du rpertoire
courant dans le fichier c:\temp.txt :
xp_cmdshell(dir > c:\\temp.txt)

Linstruction suivante ralise la mme opration, mais sans afficher de


fentre de commandes.
xp_cmdshell(dir > c:\\temp.txt, no_output )

Procdure systme xp_msver

Fonction Rcuprer des informations relatives la version et au nom du serveur de


base de donnes.
Syntaxe xp_msver ( chane )

chane La chane, obligatoirement lune de celles rpertories ci-aprs,


doit tre encadre par des dlimiteurs de chane.

Option Description

ProductName Nom du produit (Sybase Adaptive Server Anywhere).

901
Option Description

ProductVersion Numro de version, suivi du numro de build. Le


format utilis est le suivant :
9.0.0 (1200)

CompanyName Renvoie la chane suivante :


iAnywhere Solutions, Inc.

FileDescription Renvoie le nom du produit, suivi du nom du systme


dexploitation.

LegalCopyright Renvoie une chane de copyright relative au logiciel.

LegalTrade- Renvoie les informations relatives aux marques


marks associes au logiciel.

Remarques La fonction xp_msver renvoie notamment des informations relatives au


produit, la socit ditrice et la version.
Autorisations Aucune
Voir aussi Fonctions systme la page 106
Exemple Linstruction suivante permet dafficher la version et la description du
systme dexploitation :
SELECT xp_msver( ProductVersion) Version,
xp_msver(FileDescription) Description

Voici un exemple de rsultat :

Version Description

9.0.0 (1912) Sybase Adaptive Server Anywhere Windows NT

Procdure systme xp_read_file

Fonction Renvoyer le contenu dun fichier sous forme de variable LONG BINARY.
Syntaxe [ variable = CALL ] xp_read_file ( nom_fichier )

Argument nom_fichier Paramtre long varchar indiquant un nom de fichier.


Remarques La fonction lit le contenu du fichier spcifi et renvoie le rsultat sous forme
de valeur LONG BINARY.
Le nom_fichier est relatif au rpertoire de dpart du serveur de base de
donnes.

902
Chapitre 7. Fonctions et procdures systme

Cette fonction peut servir insrer dans des tables lintgralit de documents
ou dimages enregistrs dans des fichiers. Si le fichier nest pas accessible en
lecture, la fonction renvoie la valeur NULL.
Autorisations Les droits DBA sont requis
Voir aussi Procdure systme xp_write_file la page 904
Exemple Linstruction suivante insre une image dans la colonne picture de la table t1
(en supposant que toutes les autres colonnes acceptent la valeur NULL) :
INSERT INTO t1 ( picture)
SELECT xp_read_file( portrait.gif )

Procdure systme xp_sprintf

Fonction Construire une chane partir dune chane format et dun ensemble de
chanes dentre.
Syntaxe [ variable = CALL ] xp_sprintf (
chane_rsultat,
chane_format
[, chane_entre ]
)

Arguments chane_rsultat Paramtre char(254) OUT contenant la chane de


rsultats.
chane_format Paramtre char(254) spcifiant la chane de format.
chane_entre Paramtre char(254) spcifiant la chane dentre.

Remarques xp_sprintf construit une chane partir dune chane format et dun
ensemble de chanes dentre. La chane format peut contenir jusqu
50 marques de rservation de chane (%s ). Ces marques sont compltes par
les arguments chane_entre.
Tous les arguments doivent tre des chanes de moins de 254 caractres.
Autorisations Aucune
Exemple Les instructions suivantes permettent dassocier la chane Hello World ! la
variable mystring.
CREATE VARIABLE mystring CHAR(254) ;
call xp_sprintf( mystring, Hello %s, World! );

Procdure systme xp_scanf

Fonction Extraire des sous-chanes dune chane dentre et dune chane format.

903
Syntaxe [ variable = CALL ] xp_scanf (
chane_entre,
chane_format
[, chane_rsultat ]
)

Arguments chane_entre Paramtre char(254) spcifiant la chane dentre.

chane_format Paramtre char(254) spcifiant la chane de format.


chane_rsultat Paramtre char(254) OUT contenant la chane de
rsultats.
Remarques xp_scanf extrait des sous-chanes dune chane dentre et dune chane
format. La chane_format peut contenir jusqu cinquante marques de
rservation de chane (%s ). Les valeurs de ces marques sont places dans les
variables chane_sortie.
Tous les arguments doivent tre des chanes de moins de 254 caractres.
Autorisations Aucune
Exemple Les instructions suivantes permettent dassocier la chane A bientt ! la
variable machane :
CREATE VARIABLE mystring CHAR(254) ;
call xp_scanf( Hello World!, Hello %s, mystring );

Procdure systme xp_write_file

Fonction Ecrire des donnes dans un fichier partir dune instruction SQL.
Syntaxe [ variable = CALL ] xp_write_file ( nom_fichier , contenu_fichier )

Arguments nom_fichier Paramtre long varchar indiquant le nom du fichier.


contenu_fichier Paramtre long binaire spcifiant le contenu crire
dans le fichier.
Remarques La fonction crit le contenu_fichier dans le fichier nom_fichier. En cas de
succs, la valeur 0 est renvoye, et en cas dchec, une valeur non nulle.
Le nom du fichier (nom_fichier )est relatif au rpertoire de travail courant du
serveur de base de donnes. Si le fichier existe dj, son contenu est cras.
Cette fonction peut tre utile pour dcharger des donnes de type long binary
dans des fichiers.
Autorisations Les droits DBA sont requis
Voir aussi Procdure systme xp_read_file la page 902

904
Chapitre 7. Fonctions et procdures systme

Exemple Supposons que la table t1 comporte les colonnes suivantes :


filename Nom de fichier relatif au serveur.

image Colonne de type LONG BINARY contenant une image.


Linstruction suivante dcharge les images dans les fichiers nomms :
SELECT xp_write_file( filename, picture)
FROM t1

905
Procdures systme et catalogue Adaptive Server
Enterprise
Adaptive Server Enterprise fournit des procdures catalogue et systme
permettant deffectuer de nombreuses tches administratives et dobtenir des
informations systme. Adaptive Server Anywhere prend en charge certaines
de ces procdures.
Les procdures systme sont des procdures stockes prdfinies servant
gnrer des rapports sur les tables systme et mettre celles-ci jour. Les
procdures stockes de type catalogue extraient les informations des tables
systme sous forme de tableaux.

Procdures systme Adaptive Server Enterprise


La liste suivante rpertorie les procdures systme Adaptive Server
Enterprise fournies dans Adaptive Server Anywhere.
Bien que ces procdures excutent les mmes fonctions que dans Adaptive
Server Enterprise et dans la version antrieure 12 dAdaptive Server IQ,
elles ne sont pas identiques. Si des scripts existants utilisent dj ces
procdures, vous souhaiterez peut-tre afficher le texte des procdures
correspondant. Pour ce faire, utilisez Sybase Central ou excutez la
commande suivante depuis Interactive SQL :
sp_helptext procedure_name

Vous devrez peut-tre ajuster la largeur des rsultats dInteractive SQL pour
visualiser la totalit du texte. Pour ce faire, slectionnez Commande
Options et indiquez une nouvelle valeur pour la limite daffichage des
colonnes.

Procdure systme Description


sp_addgroup group-name Ajout dun groupe dans une
base de donnes.
sp_addlogin userid, password[, Ajout dun ID de login dans
defdb [, deflanguage [,
fullname]]] une base de donnes.

sp_addmessage message-num, message_ Ajout dun message utilisa-


text [, language]
teur dans SYSUSERMES-
SAGES, destin aux appels
PRINT et RAISERROR de
la procdure stocke.

906
Chapitre 7. Fonctions et procdures systme

Procdure systme Description


sp_addtype typename, data-type [, Cration dun type de don-
"identity" | nulltype]
nes utilisateur.

sp_adduser login_name [, name_in_db Ajout dun ID dutilisateur


[, grpname]]
dans une base de donnes.

sp_changegroup new-group-name, Ajout dun utilisateur dans


userid
un groupe ou transfert dun
utilisateur dun groupe un
autre.
sp_dboption [dbname, optname, Affichage ou modification
{true | false}]
dune option de base de
donnes.
sp_dropgroup group-name Suppression dun groupe
dune base de donnes.
sp_droplogin userid Suppression dun ID de lo-
gin dune base de donnes.
sp_dropmessage message-number [, Suppression dun message
language]
dfini par lutilisateur.

sp_droptype typename Suppression dun type de


donnes dfini par lutilisa-
teur.
sp_dropuser userid Suppression dun ID duti-
lisateur dune base de don-
nes.
sp_getmessage message-num, @msg-var Extraction dune chane
output [, language]
de message stocke dans
SYSUSERMESSAGES
pour les instructions PRINT
et RAISERROR.
sp_helptext object-name Affichage du texte dune
procdure systme, dun
trigger ou dune vue.
sp_password caller_passwd, new_ Cration ou modification
passwd [, userid]
dun mot de passe dun ID
utilisateur.

907
Procdures catalogue Adaptive Server Enterprise
Adaptive Server Anywhere met en oeuvre un sous-ensemble des procdures
catalogue Adaptive Server Enterprise. Le tableau ci-dessous rpertorie et
dcrit les procdures catalogue prises en charge :

Procdure catalogue Description


sp_column_privileges Non pris en charge

sp_columns table-name [, table- Affichage du type de don-


owner ] [, table-qualifier] [,
column-name] nes des colonnes spci-
fies.
sp_databases Non pris en charge

sp_datatype_info Non pris en charge

sp_fkeys pktable_name [, pktable- Affichage dinformations


owner][, pktable-qualifier] [,
fktable-name] [, fktable_owner] sur la cl trangre (ce) de
[, fktable-qualifier] la table spcifie.

sp_pkeys table-name [, table_owner] Affichage dinformations


[, table_qualifier]
sur la cl primaire de la
table spcifie.
sp_server_info Non pris en charge

sp_special_columns table_name [, Affichage de lensemble


table-owner] [, table-qualifier]
[, col-type] de colonnes le plus appro-
pri qui identifie de faon
unique une ligne dune
table.
sp_sproc_columns proc-name [, proc_ Affichage dinformations
owner] [, proc-qualifier] [,
column-name] sur les paramtres dentre
et de sortie dune procdure
stocke.
sp_stored_procedures [sp-name] [, Affichage dinformations
sp-owner] [, sp-qualifier]
sur une ou plusieurs proc-
dures stockes (ps).

908
Chapitre 7. Fonctions et procdures systme

Procdure catalogue Description


sp_statistics [table_name] [, Affichage dinformations
table_owner] [, table_qualities]
[, index_name] [, is_unique] sur les tables et leurs index.

sp_tables table-name [, table- Affichage dune liste des


owner] [, table-qualifier] [,
table-type] objets pouvant apparatre
dans une clause FROM de
la table spcifie.

909
910
Index

Symboles affectation
login pour serveur distant 374
/* (commentaire), indicateur 51
valeurs de variables SQL 635
// (commentaire), indicateur 51
affichage
[ESQL]
donnes de profilage des procdures
indicateur dinstruction 271
Interactive SQL 861, 864
[Interactive SQL]
message 575
indicateur dinstruction 271
message dans la fentre de messages 593
[SP]
ajout
indicateurs dinstruction 271
classe Java 555
[T-SQL]
index 383
indicateur dinstruction 271
message 388
% (commentaire), indicateur 51
serveur 409
&
services Web 412
oprateur binaire 15
algorithme de cryptage
^
instruction CREATE DATABASE 352
oprateur binaire 15
alias
~
instruction DELETE 465
oprateur binaire 15
pour les colonnes 629
|
ALL
oprateur binaire 15
condition et syntaxe SQL 25
29 fvrier
mot-cl de linstruction SELECT 628
gnralits 91
ALLOCATE DESCRIPTOR, instruction
syntaxe SQL 273
A
allocation
ABS, fonction espace disque 280
syntaxe SQL 110 mmoire pour zones descripteur 273
accs aux donnes distantes ALTER DATABASE, instruction
instruction FORWARD TO 509 syntaxe SQL 275
ACOS, fonction ALTER DATATYPE, instruction
syntaxe SQL 110 syntaxe SQL 282
action ALTER DBSPACE, instruction
intgrit rfrentielle 434 syntaxe SQL 280
Adaptive Server Enterprise ALTER DOMAIN, instruction
conversion de procdures stockes 250 syntaxe SQL 282
instruction CREATE DATABASE 353 ALTER EVENT, instruction
ADDRESS, clause syntaxe SQL 283
CREATE SYNCHRONIZATION USER 422 ALTER FUNCTION, instruction
adresse syntaxe SQL 285
diteur 292 ALTER INDEX, instruction
AES, algorithme de cryptage syntaxe SQL 286
instruction CREATE DATABASE 352 ALTER PROCEDURE, instruction

911
Index

syntaxe SQL 288 dans les chanes SQL 10


ALTER PUBLICATION, instruction appel
syntaxe SQL 290 procdure 330
ALTER REMOTE MESSAGE TYPE, instruction appel systme
syntaxe SQL 292 de procdures stockes 901
ALTER SERVER, instruction procdure systme xp_cmdshell 901
syntaxe SQL 294 arc cosinus, fonction
ALTER SERVICE, instruction fonction ACOS 110
syntaxe SQL 297 arc sinus, fonction
ALTER SYNCHRONIZATION SUBSCRIPTION, fonction ASIN 112
instruction arc tangente, fonction
syntaxe SQL 301 fonction ATAN 112
ALTER SYNCHRONIZATION USER, instruction fonction ATN2 113
syntaxe SQL 303 archivage
ALTER TABLE, instruction cration de sauvegardes de base de donnes 319
syntaxe SQL 305 archive
ALTER TRIGGER, instruction restauration de bases de donnes 608
syntaxe SQL 313 ARGN, fonction
ALTER VIEW, instruction syntaxe SQL 111
syntaxe SQL 315 arithmtique
ALTER WRITEFILE, instruction oprateur et syntaxe SQL 14
fonctionnalit dconseille 317 arrt
syntaxe SQL 317 base de donnes 664
an 2000 consignation dans Interactive SQL 667
conformit 89 machine virtuelle Java 666
AND mode passthrough 588
logique ternaire 31 serveur de base de donnes 665
oprateur binaire 15 arrt de bases de donnes 664
oprateur logique, description 13 arrt de souscriptions 668
anne bissextile article
gnralits 91 table systme 710, 711
annulation ASCII, fonction
modification par annulation de transactions 621 syntaxe SQL 111
transaction 621, 623, 625 ASIN, fonction
transaction jusqu un point de sauvegarde 622 syntaxe SQL 112
trigger 624 ATAN, fonction
ANSI syntaxe SQL 112
quivalence laide de la fonction REWRITE 221 ATAN2, fonction
ANSI_NULLS, option syntaxe SQL 113
compatibilit SQL Server 637 attribut
ANSI_PERMISSIONS modification de serveur distant 294
compatibilit ASE 637 audit
ANSINULL, option ajout de commentaires 815
compatibilit ASE 637 AUTO_COMMIT, option
ANY, oprateur Interactive SQL 647
conditions et syntaxe SQL 25 AUTOINCREMENT
apostrophe fonction GET_IDENTITY 161

912
Index

auto-incrmentation dchargement de tables 680


gnralits 427 dmarrage 655
rinitialisation de la valeur 869 fichier 735
auto-incrmentation globale migration 850
cration dvnement 364 mise niveau 275
autorisation point de reprise 335
CONSOLIDATE 529 procdure systme 813
octroi 524 restauration partir dune archive 608
octroi CONSOLIDATE 529 sauvegarde 319
octroi de PUBLISH 531 schma 705
octroi de REMOTE 532 structure 705
rvocation 613 suppression de fichiers 476
rvocation CONSOLIDATE 616 table systme 705
rvocation DBA distant 620 validation 882
rvocation de REMOTE 619 validation avec les checksum 693
rvocation PUBLISH 617 base de donnes compacte
table systme 721, 781 cration 348
vue systme 806 base de donnes consolide
vue systme SYSCOLAUTH 799 rvocation des autorisations 616
autorisation DBA distant base de donnes volumineuse
octroi 534 enregistrement de lindex 384
rvocation 620 base de donnes, extraction
autorisation de mise jour des colonnes 721 instruction REMOTE RESET (SQL Remote) 602
AVG, fonction base de donnes, serveur
syntaxe SQL 113 arrt 665
BASE64_DECODE, fonction
B syntaxe SQL 114
BASE64_ENCODE, fonction
BACKUP, instruction
syntaxe SQL 114
syntaxe SQL 319
BEGIN DECLARE, instruction
backup.syb, fichier
syntaxe SQL 454
gnralits 321
BEGIN TRANSACTION, instruction
bande
syntaxe SQL 327
cration de sauvegardes de base de donnes 319
BEGIN, instruction
barre oblique inverse
syntaxe SQL 324
dans les chanes SQL 10
BEGIN, mot-cl
interdite dans les identificateurs SQL 8
compatibilit 325
barre oblique-astrisque
BETWEEN, condition
indicateur de commentaires 51
syntaxe SQL 26
base de donnes
BIGINT, type de donnes
arrt 664
gnralits 62
chargement de donnes en mode bulk 563
binaire, objet volumineux
configuration pour Java 275
extraction partir de colonnes 518
connexion 344
binaire, type de donnes
cration 350
BINARY 78
cration dune base compacte 348
BIT, type de donnes
cration de fichiers 357
gnralits 70
dchargement 678

913
Index

bit, type de donnes instruction CREATE TABLE 434


gnralits 70 CASE, expression
BLOB fonction NULLIF 195
exemple dinstruction SET 636 syntaxe SQL 20
exportation 904 CASE, instruction
importation de fichiers BCP gnrs par ASE 566 syntaxe SQL 332
instruction SQL GET DATA 518 CAST, fonction
journal de transactions 280 conversion de type de donnes 83
type de donnes binaire 78 syntaxe SQL 116
BLOB, objet catalogue
insertion 635, 902 table systme 705
bloc catalogue systme
dtection et rsolution des problmes 846 gnralits 705, 799
identification 820 Transact-SQL 809
blocage CEILING, fonction
identification 820 syntaxe SQL 117
BREAK, instruction chane
syntaxe Transact-SQL 700 changement dinterprtation des chanes
bulkcopy, excution dlimites 22
dchargement 678 compatibilit avec Adaptive Server Enterprise 10
BYE, instruction conversion ambigu en date 91, 93
syntaxe SQL 498 conversion en date 71
BYTE_LENGTH, fonction dlimiteur 22
syntaxe SQL 115 chappement des caractres spciaux dans
BYTE_SUBSTR, fonction Interactive SQL 10
syntaxe SQL 115 fonction SQL 104
gnralits 10
C remplacement 219
suppression des blancs en fin de chane 225
cache
Transact-SQL 22
vidage 833
chane de caractres
CALL, instruction
gnralits 10
syntaxe SQL 330
chane dlimite
caractre dchappement
compatibilit avec Adaptive Server Enterprise 22
instruction SQL INPUT 545
chane en majuscules
instruction SQL OUTPUT 582
UCASE 245
caractre de nouvelle ligne
UPPER 246
dans les chanes SQL 10
chane en minuscules
caractre en majuscules
LCASE 177
conversion 246
LOWER 184
caractre joker
chane hexadcimale 167
condition LIKE 26
chane littrale
masque de correspondance 202
syntaxe SQL 10
caractre spcial
chane SQL de dlimitation 8
chanes SQL 10
chanes
caractres alphabtiques
guillemets 22
dfinition 8
changement de nom
CASCADE, action

914
Index

colonne 310 table systme 736, 737


table 310 vue systme 800
CHAR, fonction cl primaire
syntaxe SQL 117 clusterise 286
CHAR_LENGTH, fonction contrainte dintgrit 432
syntaxe SQL 119 gnration de valeurs uniques 190
CHARACTER VARYING, type de donnes gnration de valeurs uniques laide dUUID
gnralits 58 190
CHARACTER, type de donnes ordre des colonnes 432
gnralits 57 table distante 886, 888
chargement table systme 726, 779
insertion en mode bulk 563 UUID et GUID 190
CHARINDEX, fonction CLEAR, instruction
syntaxe SQL 118 syntaxe SQL 336
CHECK CONSTRAINTS, option CLOSE, instruction
instruction LOAD TABLE 564 syntaxe SQL 337
CHECK ON COMMIT, clause CLOSE_ON_ENDTRANS, option
intgrit rfrentielle 434 compatibilit ASE 637
CHECK, clause COALESCE, fonction
condition de recherche 24 syntaxe SQL 119
CHECK, condition codage
gnralits 431 instruction INPUT 548
CHECKPOINT, instruction instruction OUTPUT 585
syntaxe SQL 335 instruction READ 598
checksum codage de donnes
cration de bases de donnes 354 BASE64_ENCODE 114
instruction VALIDATE CHECKSUM 693 fonction HTML_ENCODE 169
classe code de retour
installation de Java dans la base de donnes 555 instruction EXIT [Interactive SQL] 498
mthode Java 100 code de sortie
suppression Java 603 instruction EXIT [Interactive SQL] 498
classe Java coefficient de dtermination 214
chargement dans la base de donnes 845 col_length, fonction Adaptive Server Enterprise 106
dtection et rsolution des problmes 845 col_name, fonction Adaptive Server Enterprise 106
instruction CREATE DATABASE 354 colonne
classement alias 629
fonction SORTKEY 229 autorisation 721
clause AT changement de nom 310
cration de table existante 372 contrainte 82, 431
clause FOR XML domaine 82
instruction SELECT 627 extraction de donnes binaires 518
cl trangre mise jour 690
clusterise 286 mise jour sans consignation 701
contrainte dintgrit 432 modification 305
nom de rle 432 table systme 725
non nomme 432 type de donnes dfini par lutilisateur 82
table distante 886, 888 vue systme SYSCOLUMNS 800

915
Index

combinaison LIKE 26
rsultat dinstructions SELECT multiples 676 logique ternaire 31
commande recherche SQL 24
systme dexploitation, excution 672 sous-requte 25
COMMENT, instruction valeur de vrit 30
syntaxe SQL 339 condition de recherche
commentaire ANY ou ALL 25
objet de base de donnes 339 BETWEEN 26
service 339 estimation de slectivit explicite 32
syntaxe SQL 51 EXISTS 30
commit deux phases IN 29
prparation 592 IS NULL 30
COMMIT, instruction IS TRUE ou FALSE 30
intgrit rfrentielle 815 IS UNKNOWN 30
syntaxe SQL 341 LIKE 26
communication, protocole logique ternaire 31
paramtres multiples dans MobiLink 423 sous-requte 25
comparaison syntaxe SQL 24
condition de recherche 24 conditions
comparaison de dates et dheures 73 recherche 24
COMPARE, fonction CONFIGURE, instruction
syntaxe SQL 119 syntaxe SQL 343
compatibilit CONFLICT, fonction
date/heure 71 syntaxe SQL 123
expression Transact-SQL 21 conflit
expressions T-SQL et option QUOTED fonction CONFLICT pour SQL Remote 123
IDENTIFIER 22 conformit an 2000 89
NULL 53 CONNECT, droits
oprateur de comparaison Transact-SQL 12 octroi 524
variable globale Transact-SQL 42 CONNECT, instruction
variable locale Transact-SQL 40 syntaxe SQL 344
compatibilit des expressions 21 CONNECTION_PROPERTY, fonction
COMPRESS, fonction syntaxe SQL 122
syntaxe SQL 121 connexion
compression activation du regroupement 652
statistiques 817 base de donnes 344
concatnation de chane cration dvnement 364
oprateur de type chane 14 dfinition 641
concurrence daccs dfinition dun nombre maximal 597
verrouillage de tables 572 interdiction avec RAISERROR 597
condition suppression 477
ALL 25 suppression dans Interactive SQL 473
ANY 25 ConnsDisabled, proprit
BETWEEN 26 dfinition avec sa_server_option 873
EXISTS 30 consignation
IN 29 arrt dans Interactive SQL 667
IS NULL 30 dmarrage dans Interactive SQL 659

916
Index

mise jour de colonnes 701 syntaxe SQL 125


consignation des informations sur les demandes xi copyright
activation depuis Interactive SQL 876 extraction 901
analyse du journal des demandes avec CORR, fonction
sa_get_request_profile 837 syntaxe SQL 127
analyse du journal des demandes avec corrlation, fonction
sa_get_request_times 838 CORR 127
console COS, fonction
affichage de messages 575 syntaxe SQL 128
CONSOLIDATE, autorisation cosinus, fonction
octroi 529 COS 128
rvocation 616 COT, fonction
constante syntaxe SQL 129
chane SQL 10 cotangente, fonction
syntaxe SQL 18 COT 129
Transact-SQL 22 COUNT, fonction
constante hexadcimale syntaxe SQL 129
gnralits 61 courrier lectronique
constantes dans des expressions 18 procdure stocke tendue 895
CONTINUE,instruction procdure systme 897
syntaxe Transact-SQL 700 COVAR_POP, fonction
contrainte syntaxe SQL 130
colonne 431 COVAR_SAMP, fonction
instruction ALTER TABLE 307 syntaxe SQL 131
unicit 431 covariance dchantillon 131
contrle des performances covariance de remplissage 130
dtermination du temps dexcution 838 CREATE COMPRESSED DATABASE, instruction
conventions fonctionnalit dconseille 348
documentation xv syntaxe SQL 348
syntaxe SQL 4 CREATE DATABASE, instruction
conventions syntaxiques syntaxe SQL 350
instruction SQL 270 CREATE DATATYPE, instruction
conventions utilises pour les instructions SQL 269 syntaxe SQL 360
conversion CREATE DBSPACE, instruction
chane en date 71 syntaxe SQL 357
utilisation des oprateurs de comparaison 83 CREATE DECRYPTED FILE, instruction
conversion de chanes syntaxe SQL 359
gnralits 104 CREATE DOMAIN, instruction
conversion de chanes ambigus en dates 91 syntaxe SQL 360
conversion de types de donnes Java en SQL 86 utilisation 81
conversion de types de donnes SQL en Java 87 CREATE ENCRYPTED FILE, instruction
conversion des dates en chanes 93 syntaxe SQL 362
conversion entre types de donnes Java et SQL 86 CREATE EVENT, instruction
conversion, type de donnes syntaxe SQL 364
oprateurs de comparaison 83 CREATE EXISTING TABLE, instruction
CONVERT, fonction syntaxe SQL 371
conversion de type de donnes 83 table Proxy 886, 892

917
Index

CREATE EXPANDED DATABASE, instruction cration


syntaxe SQL 348 base de donnes compacte 348
CREATE EXTERNLOGIN, instruction bases de donnes 350
syntaxe SQL 374 curseur 456
CREATE FUNCTION, instruction curseur dans Transact-SQL 461
syntaxe SQL 376 domaine 81
Transact-SQL 381 domaines 360
CREATE INDEX, instruction fichier dcriture 450
syntaxe SQL 383 fichier de base de donnes 357
utilisation de table 385 fonction 376
CREATE MESSAGE, instruction index 383
syntaxe Transact-SQL 388 instruction CREATE PUBLICATION 402
CREATE PROCEDURE, instruction instruction CREATE SYNCHRONIZATION
syntaxe SQL 390 SUBSCRIPTION 419
syntaxe Transact-SQL 400 message 388
CREATE PUBLICATION, instruction point de sauvegarde 626
syntaxe SQL 402 procdure stocke 390
CREATE REMOTE MESSAGE TYPE, instruction procdure stocke dans Transact-SQL 400
syntaxe SQL 405 sauvegarde de bases de donnes 319
CREATE SCHEMA, instruction schma 407
syntaxe SQL 407 serveur 409
CREATE SERVER, instruction services Web 412
syntaxe SQL 409 souscriptions 417
CREATE SERVICE, instruction table 425
syntaxe SQL 412 table Proxy 371, 426, 892
CREATE STATISTICS, instruction table temporaire locale 463
syntaxe SQL 416 trigger 438, 443
CREATE SUBSCRIPTION, instruction trigger dans Transact-SQL 446
syntaxe SQL 417 type de donnes 81
CREATE SYNCHRONIZATION SUBSCRIPTION, type de message distant 405
instruction variable SQL 447, 455
syntaxe SQL 419 vue 448
CREATE SYNCHRONIZATION USER, instruction crochet
syntaxe SQL 422 identificateur SQL 8
CREATE TABLE, instruction objet de base de donnes 8
syntaxe SQL 425 crochets
table distante 426 identificateurs SQL 8
CREATE TRIGGER, instruction objets de base de donnes 8
syntaxe SQL 438, 443 CROSS JOIN
syntaxe Transact-SQL 446 syntaxe SQL 511
CREATE VARIABLE, instruction cryptage
syntaxe SQL 447 fichier de base de donnes 352
CREATE VIEW, instruction instruction CREATE ENCRYPTED FILE 362
syntaxe SQL 448 cryptage fort
CREATE WRITEFILE, instruction instruction CREATE DATABASE 352
fonctionnalit dconseille 450 cryptage, cl
syntaxe SQL 450 restriction 353

918
Index

CSCONVERT, fonction instruction CREATE PROCEDURE 392


syntaxe SQL 131 curunreservedpgs, fonction Adaptive Server
CUBE, opration Enterprise 106
clause GROUP BY 535
WITH CUBE 535 D
CUME_DIST, fonction
data_pgs, fonction Adaptive Server Enterprise 106
syntaxe SQL 133
DATALENGTH, fonction
CURRENT DATABASE
syntaxe SQL 134
valeur spciale 35
datalength, fonction Adaptive Server Enterprise 106
CURRENT DATE
date
valeur spciale 35
an 2000 89
CURRENT PUBLISHER 531
chane ambigu 91, 93
valeur spciale 35
comparaison 73
CURRENT TIME
conversion partir de chanes 71
valeur spciale 35
dfinie sans ambigut 73
CURRENT TIMESTAMP
envoi la base de donnes 71
valeur spciale 36
extraction 75
CURRENT USER
fonction de conversion 98
valeur spciale 36
insertion 75
CURRENT UTC TIMESTAMP
interprtation 75
valeur spciale 36
interprtation des chanes en tant que dates 73
CURRENT_TIMESTAMP
problme de conversion 93
valeur spciale 36
requte 72
CURRENT_USER
date courante, fonction
valeur spciale 36
TODAY 242
curseur
DATE, fonction
dclaration 456
syntaxe SQL 135
dclaration dans Transact-SQL 461
DATE, type de donnes
description 469
gnralits 75
description du comportement 392
date/heure
extraction de lignes 502
fonction de conversion 98
fermeture 337
DATE_ORDER, option
insertion de lignes 594
utilisation 74
instruction EXPLAIN 500
DATE_ORDER,option
libration 452
ODBC 74
nouvelle description 392
DATEADD, fonction
ouverture 579
syntaxe SQL 135
possibilit de mise jour dfinie dans une
DATEDIFF, fonction
instruction SELECT 632
syntaxe SQL 136
prparation dinstructions 589
DATEFIRST, option
suppression de lignes 467
compatibilit ASE 637
utilis en boucle 507
DATEFORMAT, fonction
curseur statique
syntaxe SQL 137
dclaration 456
DATENAME, fonction
curseur, ouverture
syntaxe SQL 138
instruction OPEN 579
DATEPART, fonction
curseur, redescription
syntaxe SQL 139

919
Index

DATETIME, fonction dchargement de donnes


syntaxe SQL 139 jeu de caractres cods sur plusieurs octets 566,
DATETIME, type de donnes 680
gnralits 76 DECIMAL, type de donnes
DAY, fonction gnralits 62
syntaxe SQL 139 dclaration
DAYNAME, fonction curseur 456
syntaxe SQL 140 curseur dans Transact-SQL 461
DAYS, fonction variable hte dans Embedded SQL 454
syntaxe SQL 140 variable SQL 455
DB_EXTENDED_PROPERTY, fonction DECLARE CURSOR, instruction
syntaxe SQL 142 syntaxe SQL 456, 461
DB_ID DECLARE LOCAL TEMPORARY TABLE,
fonction Adaptive Server Enterprise 106 instruction
DB_ID, fonction syntaxe SQL 463
syntaxe SQL 141 DECLARE, instruction
DB_NAME compatibilit avec Transact-SQL 325
fonction Adaptive Server Enterprise 106 syntaxe SQL 324, 455
DB_NAME, fonction dclenchement
syntaxe SQL 142 vnement 673
DB_PROPERTY, fonction dcodage de donnes
syntaxe SQL 143 fonction BASE64_DECODE 114
DBA, droits fonction HTML_DECODE 169
octroi 524 DECOMPRESS, fonction
DBFreePercent, condition dvnement syntaxe SQL 144
gnralits 153 dconnexion
DBFreeSpace, condition dvnement cration dvnement 364
gnralits 153 utilisateur de base de donnes 477
DBSize, condition dvnement DECRYPT, fonction
gnralits 153 syntaxe SQL 145
DBSPACE dcryptage
suppression 474 fichier 359
dbspace DEFAULT TIMESTAMP, colonne 430
cration 357 DEFAULTS, option
dtermination de lespace disponible 830 instruction LOAD TABLE 565
modification 280 dfini par lutilisateur, type de donnes
table systme SYSFILE 735 suppression 474
DEALLOCATE DESCRIPTOR, instruction dfinie par lutilisateur, estimation de slectivit
syntaxe SQL 453 gnralits 32
DEALLOCATE, instruction dfinie par lutilisateur, fonction
syntaxe SQL 452 sortie 611
dbogage dfinition
comportement de linstruction MESSAGE, connexion 641
contrle 575 modification de tables 305
dchargement option 644
jeu de rsultats 678 option dans Interactive SQL 343, 647
table 680 option dans Transact-SQL 637

920
Index

option distante 648 syntaxe SQL 148


SQLCA 650 DISCONNECT, instruction
utilisateur 652 syntaxe SQL 473
valeurs de variables SQL 635 distant, autorisation DBA
zone descripteur 642 octroi 534
dfragmentation distante, option
REORGANIZE TABLE 604 dfinition 648
DEGREES, fonction DISTINCT, clause
syntaxe SQL 146 NULL 53
DELETE, instruction DISTINCT, mot-cl
alias 465 gnralits 628
syntaxe SQL 465 distinction majuscules/minuscules
DELETE, instruction (positionne) condition LIKE 27
syntaxe SQL 467 oprateur de comparaison 12
DELETING, condition documentation
trigger 31 conventions xv
DELIMITED BY, option conventions pour la syntaxe SQL 269
instruction LOAD TABLE 565 SQL Anywhere Studio xii
dmarrage domaine
base de donnes 655 cration 360
consignation dans Interactive SQL 659 gnralits 81
cration dvnement 364 modification 282
machine virtuelle Java 658 suppression 474
mode passthrough 588 Transact-SQL 82
serveur de base de donnes 657 donnes
souscription 660 exportation dans des fichiers partir de tables 582
souscription lors dune extraction de base de importation dans des tables partir de fichiers 545
donnes 602 slection de lignes 627
DENSE_RANK, fonction donnes binaires
syntaxe SQL 147 codage 114
DESCRIBE, instruction dcodage 114
nom de colonne long 470 extraction partir de colonnes 518
syntaxe SQL 469 donnes de type caractre
descripteur chane 10
instruction DESCRIBE 469 compatibilit avec ASE 57
instruction SQL FETCH 502 gnralits 56
prparation dinstructions 589 donnes distantes, accs
description dconnexion 294
comportement du curseur 392 donnes, exportation
curseur 469 dans des fichiers partir de tables 582
dtection et rsolution des problmes donnes, type
consignation 874 conversion 83
disque non standard 277 gnralits 55
verrou 846 double barre oblique
deux phases, commit indicateur de commentaires 51
prparation 592 DOUBLE, type de donnes
DIFFERENCE, fonction gnralits 63

921
Index

DOW, fonction DROP TABLE, instruction


syntaxe SQL 148 syntaxe SQL 474
droit DBA DROP TRIGGER, instruction
table systme 788 syntaxe SQL 474
droit sur les ressources DROP VARIABLE, instruction
table systme 788 syntaxe SQL 488
DROP CONNECTION, instruction DROP VIEW, instruction
syntaxe SQL 477 syntaxe SQL 474
DROP DATABASE, instruction DROP, instruction
syntaxe SQL 476 syntaxe SQL 474
DROP DATATYPE, instruction DUMMY, table systme
syntaxe SQL 474 gnralits 708
DROP DBSPACE, instruction DYNAMIC SCROLL, curseur
syntaxe SQL 474 dclaration 456
DROP DOMAIN, instruction
syntaxe SQL 474 E
DROP EVENT, instruction
E/S
syntaxe SQL 474
rtalonnage du modle destimation des cots
DROP EXTERNLOGIN, instruction
dE/S 277
syntaxe SQL 478
cart standard
DROP FUNCTION, instruction
fonction STDDEV 234
syntaxe SQL 474
fonction STDDEV_POP 235
DROP INDEX, instruction
fonction STDDEV_SAMP 235
syntaxe SQL 474
chec, connexion
DROP MESSAGE, instruction
cration dvnement 364
syntaxe SQL 474
criture, fichier
DROP OPTIMIZER STATISTICS, instruction
cration 450
syntaxe SQL 484
diteur
DROP PROCEDURE, instruction
adresse 292, 405, 480
syntaxe SQL 474
distant 532
DROP PUBLICATION, instruction
instruction GRANT PUBLISH 531
syntaxe SQL 479
effacement
DROP REMOTE MESSAGE TYPE, instruction
volet dInteractive SQL 336
syntaxe SQL 480
lment
DROP SERVER, instruction
syntaxe SQL 4
syntaxe SQL 481
lment de langage SQL
DROP SERVICE, instruction
gnralits 3
syntaxe SQL 482
lments communs dans la syntaxe SQL 269
DROP STATEMENT, instruction
limination
syntaxe SQL 483
table 474
DROP SUBSCRIPTION, instruction
ELSE
syntaxe SQL 485
expression CASE 20
DROP SYNCHRONIZATION SUBSCRIPTION,
expression IF 19
instruction
Embedded SQL
syntaxe SQL 486
instruction BEGIN DECLARE 454
DROP SYNCHRONIZATION USER, instruction
instruction CLOSE 337
syntaxe SQL 487
instruction CONNECT 344

922
Index

instruction DEALLOCATE DESCRIPTOR 453 signale dans Transact-SQL 596


instruction DECLARE CURSOR 456 ERRORMSG, fonction
instruction DELETE (positionne) 467 syntaxe SQL 150
instruction DESCRIBE 469 ErrorNumber, condition dvnement
instruction DISCONNECT 473 gnralits 153
instruction DROP STATEMENT 483 ESCAPE CHARACTER, option
instruction END DECLARE 454 instruction LOAD TABLE 565
instruction EXECUTE 491 ESCAPES, option
instruction EXECUTE IMMEDIATE 495 instruction LOAD TABLE 565
instruction EXPLAIN 500 espace disque
instruction FETCH 502 cration dvnement 364
instruction GET DATA 518 ESQL
instruction GET DESCRIPTOR 520 indicateur dinstruction 271
instruction GET OPTION 522 ESTIMATE, fonction
instruction INCLUDE 544 syntaxe SQL 151
instruction OPEN 579 ESTIMATE_SOURCE, fonction
instruction PREPARE 589 syntaxe SQL 152
instruction PUT 594 estimation
instruction SET CONNECTION 641 slectivit explicite 32
instruction SET DESCRIPTOR 642 estimation de slectivit
instruction SET SQLCA 650 source destimation 152
instruction WHENEVER 699 estimation de slectivit explicite
syntaxe ALLOCATE DESCRIPTOR 273 gnralits 32
syntaxe de linstruction DEALLOCATE 452 estimation utilisateur
ENCRYPT, fonction gnralits 32
syntaxe SQL 149 tablissement
END point de sauvegarde 626
expression CASE 20 talonnage du serveur 275
END DECLARE, instruction tendue, insertion 491
syntaxe SQL 454 tiquette
END LOOP, instruction instruction 270, 523
syntaxe SQL 574 tiquette dinstruction
END, instruction GOTO (Transact-SQL) 523
syntaxe SQL 324 vnement
END, mot-cl cration et planification 364
compatibilit 325 dclenchement 673
ENDIF liste des conditions 153
expression IF 19 modification 283
envoi planification 283, 364
instruction SQL un serveur distant 509 suppression 474
envoi et rcupration de valeurs de date 90 vnement planifi
erreur instruction WAITFOR 697
arrondi 61 vnements
cration dvnement 364 EVENT_PARAMETER 155
interception dans Embedded SQL 699 EVENT_CONDITION, fonction
message dfini par lutilisateur 787 syntaxe SQL 153
rapport 654 EVENT_CONDITION_NAME, fonction

923
Index

syntaxe SQL 155 nom de colonne 18


EVENT_PARAMETER, fonction priorit des oprateurs SQL 16
syntaxe SQL 155 sous-requte 19
EXCEPT, opration syntaxe SQL 17
syntaxe SQL 489 expression mathmatique
exception oprateur arithmtique 14
indication 654 expressions
nouvelle indication 607 types de donnes 160
EXCEPTION, instruction EXPRTYPE, fonction
syntaxe SQL 324 syntaxe SQL 160
EXECUTE IMMEDIATE, instruction externe, login
syntaxe SQL 495 suppression pour les serveurs distants 478
EXECUTE, autorisation extraction
instruction GRANT 524 donnes binaires de colonnes 518
EXECUTE, instruction informations de zones descripteur 520
syntaxe SQL 491 ligne par curseur 502
syntaxe Transact-SQL 493 valeur doption 522
excution extraction de bloc
commande du systme dexploitation 672 instruction FETCH 503
instruction prpare 491 instruction OPEN 580
instruction SQL partir dun fichier 598 extraction multiligne
procdure stocke dans Transact-SQL 493 instruction FETCH 503
reprise de lexcution de procdures 610 instruction OPEN 580
EXISTS, condition
syntaxe SQL 30 F
EXIT, instruction
FALSE
syntaxe SQL 498
logique ternaire 31
EXP, fonction
FALSE, condition
syntaxe SQL 158
IS FALSE 30
EXPERIENCE_ESTIMATE, fonction
fentre de messages
syntaxe SQL 158
impression 593
EXPLAIN, instruction
fermeture
syntaxe SQL 500
connexion 477
EXPLANATION, fonction
curseur 337
syntaxe SQL 159
Interactive SQL 498
exponentielle, fonction
FETCH, instruction
EXP 158
syntaxe SQL 502
exportation
fichier
dchargement de jeux de rsultats 678
allocation despace pour une base de donnes 280
dchargement de tables 680
base de donnes, cration 357
objet BLOB 904
cryptage 362
expression
dcryptage 359
compatibilit avec Adaptive Server Enterprise 18
exportation de donnes de tables 582
compatibilit Transact-SQL 21
importation de donnes dans des tables 545
constante 18
lecture dinstructions SQL 598
expression CASE 20
procdure systme xp_read_file 902
expression IF 19
procdure systme xp_write_file 904

924
Index

fichier dcriture fonction chane


cration 450 ASCII 111
modification 317 BYTE_LENGTH 115
fichier de base de donnes BYTE_SUBSTR 115
enregistrement de lindex 384 CHAR 117
suppression 476 CHAR_LENGTH 119
fichier de commandes CHARINDEX 118
lecture dinstructions SQL 598 COMPARE 119
paramtre pour Interactive SQL 587 COMPRESS 121
fichier temporaire CSCONVERT 131
dtermination de lespace disponible 830 DECOMPRESS 144
fichier ust DECRYPT 145
cration 229 DIFFERENCE 148
FILE, type de message ENCRYPT 149
gnralits 292, 405, 480 gnralits 104
fin HASH 166
annulation de transactions 621 INSERTSTR 174
FIRST, clause LCASE 177
instruction SELECT 627 LEFT 178
FLOAT, type de donnes LENGTH 178
gnralits 63 liste alphabtique 104
FLOOR, fonction LOCATE 182
syntaxe SQL 160 LOWER 184
fonction LTRIM 185
agrgat 96 OPENXML 197
chane 104 PATINDEX 202
classement 97 REPEAT 219
conversion de types de donnes SQL 97 REPLACE 219
cration 376 REPLICATE 220
de date et dheure 98 RIGHT 223
dfinie par lutilisateur 100 RTRIM 225
diverse 101 SIMILAR 228
HTTP 103 SORTKEY 229
image SQL 109 SOUNDEX 232
index 384 SPACE 233
Java 100 STR 236
modification 285 STRING 237
numrique 102 STRTOUUID 238
sortie dune fonction dfinie par lutilisateur 611 STUFF 239
suppression 474 SUBSTRING 239
systme 106 TRIM 243
texte SQL 109 UCASE 245
types 96 UPPER 246
fonction ATN2 UUIDTOSTR 246
syntaxe SQL 113 XMLAGG 252
fonction caractre XMLCONCAT 253
liste alphabtique 104 XMLELEMENT 254

925
Index

XMLFOREST 255 fonction de classement


XMLGEN 256 liste alphabtique 97
fonction dagrgat fonction de conversion
AVG 113 liste alphabtique 97
COUNT 129 type de donnes 97
gnralits 96 fonction de conversion de types de donnes
GROUPING 165 CAST 116
LIST 179 CONVERT 125
liste alphabtique 96 gnralits 97
MAX 185 HEXTOINT 167
MIN 186 INTTOHEX 175
STDDEV 234 ISDATE 175
STDDEV_POP 235 ISNULL 176
STDDEV_SAMP 235 fonction de date
SUM 241 liste alphabtique 98
VAR_POP 248 fonction de date et dheure
VAR_SAMP 249 gnralits 98
VARIANCE 250 fonction dfinie par lutilisateur
fonction dheure cration 376
liste alphabtique 98 Java 100
fonction date et heure liste alphabtique 100
DATE 135, 258 renvoi de valeurs 611
DATEADD 135 fonction diverse
DATEDIFF 136 ARGN 111
DATEFORMAT 137 COALESCE 119
DATENAME 138 CONFLICT 123
DATEPART 139 ERRORMSG 150
DATETIME 139 ESTIMATE 151
DAY 139 ESTIMATE_SOURCE 152
DAYNAME 140 EXPERIENCE_ESTIMATE 158
DAYS 140 EXPLANATION 159
DOW 148 gnralits 101
GETDATE 162 GET_IDENTITY 161
HOUR 167 GRAPHICAL_PLAN 163
HOURS 168 GRAPHICAL_ULPLAN 164
MINUTE 186 GREATER 165
MINUTES 187 IDENTITY 173
MONTH 188 IFNULL 173
MONTHNAME 189 INDEX_ESTIMATE 174
MONTHS 189 ISNUMERIC 177
NOW 194 LESSER 179
QUARTER 208 LONG_ULPLAN 184
SECOND 225 NEWID 190
SECONDS 226 NULLIF 195
TODAY 242 NUMBER 196
WEEKS 251 PLAN 204
YMD 259 REWRITE 221

926
Index

SHORT_ULPLAN 227 TRUNCNUM 245


SQLDIALECT 234 fonction SQL
TRACEBACK 243 classement 97
TRANSACTSQL 243 fonction systme
VAREXISTS 250 compatibilit 106
WATCOMSQL 250 DATALENGTH 134
fonction externe DB_EXTENDED_PROPERTY 142
exemple Java 381 DB_ID 141
fonction HTTP DB_NAME 142
gnralits 103 DB_PROPERTY 143
HTTP_HEADER 172 EVENT_CONDITION 153
HTTP_VARIABLE 172 EVENT_CONDITION_NAME 155
liste alphabtique 103 EVENT_PARAMETER 155
NEXT_HTTP_HEADER 193 gnralits 106
NEXT_HTTP_VARIABLE 194 liste alphabtique 106
fonction Java et SQL dfinie par lutilisateur NEXT_CONNECTION 191
gnralits 100 NEXT_DATABASE 193
fonction numrique PROPERTY 206
ABS 110 PROPERTY_DESCRIPTION 206
ACOS 110 PROPERTY_NAME 207
ASIN 112 PROPERTY_NUMBER 207
ATAN 112 fonction texte et image
ATAN2 113 gnralits 109
ATN2 113 TEXTPTR 242
CEILING 117 fonction, classement
CONNECTION_PROPERTY 122 gnralits 97
COS 128 fonction, dfinie par lutilisateur
COT 129 renvoi de valeurs 611
DEGREES 146 fonctionnalit
EXP 158 serveur distant 716, 717
FLOOR 160 fonctions de conversion de types de donnes
gnralits 102 gnralits 97
liste alphabtique 102 FOR, clause
LOG 183 instruction SELECT 632
LOG10 183 FOR, instruction
MOD 188 syntaxe SQL 507
PI 204 FORCE INDEX
POWER 205 optimisation de niveau index 512
RADIANS 208 FORMAT, option
RAND 209 instruction LOAD TABLE 566
REMAINDER 218 forum
ROUND 223 sources dinformations complmentaires xix
SIGN 228 support xix
SIN 229 FORWARD TO, instruction
SQRT 234 syntaxe SQL 509
TAN 241 fort
TRUNCATE 244 dfinition 255

927
Index

fragmentation GRANT REMOTE, instruction


table 604 syntaxe SQL 532
frquence GRANT RESOURCE, instruction
envoi de messages 529, 532 syntaxe SQL 524
FROM, clause GRANT, instruction
instruction SELECT 630 syntaxe SQL 524
slection partir de procdures stockes 513 vrification des autorisations 721
syntaxe SQL 511 GRAPHICAL_PLAN, fonction
FTP, type de message syntaxe SQL 163
gnralits 292, 405 GRAPHICAL_ULPLAN, fonction
syntaxe SQL 164
G GREATER, fonction
syntaxe SQL 165
gestion
GROUP BY, clause
erreur dans Embedded SQL 699
clause HAVING 536
erreur dans Transact-SQL 596
instruction SELECT 631
gestion des transactions
opration CUBE 535
dans Transact-SQL 327
opration GROUPING SETS 535
instruction SQL BEGIN TRANSACTION 327
opration ROLLUP 535
Transact-SQL 341
syntaxe SQL 535
GET DATA, instruction
GROUP, droits
syntaxe SQL 518
octroi 524
GET DESCRIPTOR, instruction
GROUPING SETS, opration
syntaxe SQL 520
clause GROUP BY 535
GET OPTION, instruction
GROUPING, fonction
syntaxe SQL 522
syntaxe SQL 165
GET_IDENTITY, fonction
GUID
syntaxe SQL 161
syntaxe SQL pour la fonction NEWID 190
GETDATE, fonction
syntaxe SQL pour la fonction STRTOUUID 238
syntaxe SQL 162
syntaxe SQL pour la fonction UUIDTOSTR 246
GLOBAL_DATABASE_ID, option
type de donnes UNIQUEIDENTIFIER 79
instruction CREATE TABLE 428
guillemets
Globally Unique Identifier (GUID)
compatibilit avec Adaptive Server Enterprise 22
syntaxe SQL pour la fonction NEWID 190
identificateur SQL 8
GOTO, instruction
interdits dans les identificateurs SQL 8
syntaxe Transact-SQL 523
objet de base de donnes 8
GRANT CONNECT, instruction
simples et doubles 22
syntaxe SQL 524
GRANT CONSOLIDATE, instruction
H
syntaxe SQL 529
GRANT DBA, instruction HASH, fonction
syntaxe SQL 524 syntaxe SQL 166
GRANT GROUP, instruction HAVING, clause
syntaxe SQL 524 condition de recherche 24
GRANT PUBLISH, instruction instruction SELECT 631
syntaxe SQL 531 HELP, instruction
GRANT REMOTE DBA, instruction syntaxe SQL 539
syntaxe SQL 534 heure

928
Index

comparaison 73 gnralits 8
envoi la base de donnes 71 longueur maximale sous ASA 8
fonction de conversion 98 syntaxe SQL 8
requte 72 IDENTITY, fonction
HEXTOINT, fonction syntaxe SQL 173
syntaxe SQL 167 IdleTime, condition dvnement
histogramme gnralits 153
estimation de slectivit 32 IF UPDATE, clause
mise jour avec CREATE STATISTICS 416 trigger 438, 443
mise jour avec LOAD TABLE 569 trigger dans Transact-SQL 446
table systme SYSCOLSTAT 723 IF, expression
host_id, fonction Adaptive Server Enterprise 106 condition de recherche 24
host_name, fonction Adaptive Server Enterprise 106 syntaxe SQL 19
HOUR, fonction IF, instruction
syntaxe SQL 167 syntaxe SQL 540
HOURS, fonction syntaxe Transact-SQL 542
syntaxe SQL 168 IFNULL, fonction
HTML_DECODE, fonction syntaxe SQL 173
syntaxe SQL 169 image
HTML_ENCODE, fonction lecture partir de la base de donnes 600
syntaxe SQL 169 image, fonction SQL 109
HTTP IMAGE, type de donnes
dfinition den-ttes 878 gnralits 78
dfinition des options 879 imbrication
HTTP_DECODE, fonction transaction dfinie par lutilisateur 327
syntaxe SQL 170 importation de donnes
HTTP_ENCODE, fonction dans des tables partir de fichiers 545
syntaxe SQL 171 impression
HTTP_HEADER, fonction message dans la fentre de messages 593
syntaxe SQL 172 IN, condition
HTTP_VARIABLE, fonction syntaxe SQL 29
syntaxe SQL 172 inactivit, serveur
cration dvnement 364
I INCLUDE, instruction
syntaxe SQL 544
icne
index
utilisation dans ce manuel xvii
ALTER INDEX, instruction 286
ID de base de donnes
changement de nom 286
fonction DB_ID 141
cl trangre 385
ID utilisateur
cl primaire 385
changement dautorisations et de mots de passe
clusteris 286
524
compactage 604
cration 524
cration 383
restrictions 525
cration automatique 385
rvocation 613
dnomination 385
table systme 779, 788
fonction 384
vue systme 806
fonction intgre 383
identificateur

929
Index

nom unique 385 syntaxe SQL 174


propritaire 385 INSTALL JAVA, instruction
suppression 474 installation de classes Java 555
table systme 742, 746 syntaxe SQL 555
unique 383 installation
utilisation de la table 385 classe Java 555
validation 694 instruction
virtuel 383 BEGIN et END 324
vue 385 BREAK (Transact-SQL) 700
vue systme 800 BYE 498
index clusteris clause FROM 511
ALTER INDEX, instruction 286 clause GROUP BY 535
index tranger clause SQL FROM 511
ALTER INDEX, instruction 286 CONTINUE (Transact-SQL) 700
index primaire CREATE EXPANDED DATABASE 348
ALTER INDEX, instruction 286 CREATE PROCEDURE (Transact-SQL) 400
index unique 383 DROP STATISTICS 484
index_col, fonction Adaptive Server Enterprise 106 EXECUTE 491
INDEX_ESTIMATE, fonction EXECUTE (Transact-SQL) 493
syntaxe SQL 174 EXECUTE IMMEDIATE 495
indicateur EXIT 498
commentaire 51 EXPLAIN 500
indicateur de commentaire 51 FETCH 502
indicateurs de contexte de linstruction 271 FOR 507
informations FORWARD TO 509
documentation xix GET DATA 518
obtention xix GET DESCRIPTOR 520
informations dappellation commerciale GET OPTION 522
extraction 901 GOTO 523
initialisation GRANT 524
base de donnes 350 GRANT CONSOLIDATE 529
INNER JOIN GRANT PUBLISH 531
syntaxe SQL 511 GRANT REMOTE 532
INPUT, instruction GRANT REMOTE DBA 534
syntaxe SQL 545 HELP 539
INSERT, instruction IF 540
syntaxe SQL 551 IF (Transact-SQL) 542
INSERTING, condition INCLUDE 544
trigger 31 INPUT 545
insertion INSERT 551
tendue 491 INSTALL JAVA 555
ligne dans des tables 551 LEAVE 560
ligne dans un curseur 594 LOAD STATISTICS 562
ligne en mode bulk 563 LOCK TABLE 572
multiligne 491 LOOP 574
insertion, objet BLOB 902 MESSAGE 575
INSERTSTR, fonction OPEN 579

930
Index

OUTPUT 582 STOP ENGINE 665


PARAMETERS 587 STOP JAVA 666
PASSTHROUGH 588 STOP LOGGING (Interactive SQL) 667
prparation 589 STOP SUBSCRIPTION 668
PREPARE 589 SYNCHRONIZE SUBSCRIPTION 671
PREPARE TO COMMIT 592 syntaxe ALLOCATE DESCRIPTOR 273
prpare, excution 491 syntaxe ALTER DATABASE 275
PRINT 593 syntaxe ALTER DATATYPE 282
PUT 594 syntaxe ALTER DBSPACE 280
QUIT 498 syntaxe ALTER DOMAIN 282
RAISERROR 596 syntaxe ALTER EVENT 283
READ 598 syntaxe ALTER FUNCTION 285
READTEXT 600 syntaxe ALTER INDEX 286
regroupement 324 syntaxe ALTER PROCEDURE 288
RELEASE SAVEPOINT 601 syntaxe ALTER PUBLICATION 290
REMOTE JAVA 603 syntaxe ALTER REMOTE MESSAGE TYPE 292
REMOTE RESET 602 syntaxe ALTER SERVER 294
REORGANIZE TABLE 604 syntaxe ALTER SERVICE 297
RESIGNAL 607 syntaxe ALTER SYNCHRONIZATION
RESTORE DATABASE 608 SUBSCRIPTION 301
RESUME 610 syntaxe ALTER SYNCHRONIZATION USER
RETURN 611 303
REVOKE 613 syntaxe ALTER TABLE 305
REVOKE CONSOLIDATE 616 syntaxe ALTER TRIGGER 313
REVOKE PUBLISH 617 syntaxe ALTER VIEW 315
REVOKE REMOTE 619 syntaxe ALTER WRITEFILE 317
REVOKE REMOTE DBA 620 syntaxe BACKUP 319
ROLLBACK 621 syntaxe BEGIN 324
ROLLBACK TO SAVEPOINT 622 syntaxe BEGIN TRANSACTION 327
ROLLBACK TRIGGER 624 syntaxe CALL 330
SAVEPOINT 626 syntaxe CASE 332
SELECT 627 syntaxe CHECKPOINT 335
SET 635 syntaxe CLEAR 336
SET (Transact-SQL) 637 syntaxe CLOSE 337
SET CONNECTION 641 syntaxe COMMENT 339
SET DESCRIPTOR 642 syntaxe COMMIT 341
SET OPTION 644, 647 syntaxe CONFIGURE 343
SET REMOTE OPTION 648 syntaxe CONNECT 344
SET SQLCA 650 syntaxe CREATE COMPRESSED DATABASE
SETUSER 652 348
SIGNAL 654 syntaxe CREATE DATABASE 350
START DATABASE 655 syntaxe CREATE DBSPACE 357
START ENGINE 657 syntaxe CREATE DECRYPTED FILE 359
START JAVA 658 syntaxe CREATE DOMAIN 360
START LOGGING (Interactive SQL) 659 syntaxe CREATE ENCRYPTED FILE 362
START SUBSCRIPTION 660 syntaxe CREATE EVENT 364
STOP DATABASE 664 syntaxe CREATE EXISTING TABLE 371

931
Index

syntaxe CREATE EXTERNLOGIN 374 syntaxe DROP PUBLICATION 479


syntaxe CREATE FUNCTION 376 syntaxe DROP REMOTE MESSAGE TYPE 480
syntaxe CREATE INDEX 383 syntaxe DROP SERVER 481
syntaxe CREATE MESSAGE (Transact-SQL)388 syntaxe DROP SERVICE 482
syntaxe CREATE PROCEDURE 390 syntaxe DROP STATEMENT 483
syntaxe CREATE PUBLICATION 402 syntaxe DROP SUBSCRIPTION 485
syntaxe CREATE REMOTE MESSAGE 405 syntaxe DROP SYNCHRONIZATION
syntaxe CREATE SCHEMA 407 SUBSCRIPTION 486
syntaxe CREATE SERVER 409 syntaxe DROP SYNCHRONIZATION USER 487
syntaxe CREATE SERVICE 412 syntaxe DROP TABLE 474
syntaxe CREATE STATISTICS 416 syntaxe DROP TRIGGER 474
syntaxe CREATE SUBSCRIPTION 417 syntaxe DROP VARIABLE 488
syntaxe CREATE SYNCHRONIZATION syntaxe DROP VIEW 474
SUBSCRIPTION 419 syntaxe END DECLARE 454
syntaxe CREATE SYNCHRONIZATION USER syntaxe EXCEPT 489
422 syntaxe INTERSECT 558
syntaxe CREATE TABLE 425 syntaxe LOAD TABLE 563
syntaxe CREATE TRIGGER 438, 443 syntaxe ROLLBACK TRANSACTION 623
syntaxe CREATE TRIGGER (Transact-SQL) 446 syntaxe SAVE TRANSACTION 625
syntaxe CREATE VARIABLE 447 syntaxe SQL de BEGIN DECLARE 454
syntaxe CREATE VIEW 448 syntaxe START SYNCHRONIZATION DELETE
syntaxe CREATE WRITEFILE 450 662
syntaxe DEALLOCATE 452 syntaxe STOP SYNCHRONIZATION DELETE
syntaxe DEALLOCATE DESCRIPTOR 453 669
syntaxe DECLARE 455 SYSTEM (Interactive SQL) 672
syntaxe DECLARE CURSOR 456 TRIGGER EVENT 673
syntaxe DECLARE CURSOR (Transact-SQL) TRUNCATE TABLE 674
461 UNION 676
syntaxe DECLARE LOCAL TEMPORARY UNLOAD 678
TABLE 463 UNLOAD TABLE 680
syntaxe DELETE 465 UPDATE 683, 690
syntaxe DELETE (positionne) 467 UPDATE (positionne) 688
syntaxe DESCRIBE 469 VALIDATE CHECKSUM 693
syntaxe DISCONNECT 473 VALIDATE INDEX 694
syntaxe DROP 474 VALIDATE TABLE 695
syntaxe DROP CONNECTION 477 WAITFOR 697
syntaxe DROP DATABASE 476 WHENEVER (Embedded SQL) 699
syntaxe DROP DATATYPE 474 WHILE (Transact-SQL) 700
syntaxe DROP DBSPACE 474 WRITETEXT (Transact-SQL) 701
syntaxe DROP DOMAIN 474 instruction CALL
syntaxe DROP EVENT 474 Transact-SQL 493
syntaxe DROP EXTERNLOGIN 478 instruction compose
syntaxe DROP FUNCTION 474 compatibilit 325
syntaxe DROP INDEX 474 DECLARE 325
syntaxe DROP MESSAGE 474 gnralits 324
syntaxe DROP OPTIMIZER STATISTICS 484 instruction CREATE TABLE
syntaxe DROP PROCEDURE 474 Transact-SQL 435

932
Index

instruction de contrle instruction SET CONNECTION 641


BREAK (Transact-SQL) 700 instruction SET OPTION 647
CALL 330 instruction START DATABASE 655
CASE 332 instruction START ENGINE 657
CONTINUE (Transact-SQL) 700 instruction START LOGGING 659
GOTO (Transact-SQL) 523 instruction STOP LOGGING 667
IF (SQL) 540 instruction SYSTEM 672
IF (Transact-SQL) 542 instructoin CLEAR 336
LEAVE SQL 560 liste alphabtique de toutes les instructions 261
LOOP (SQL) 574 page de code de linstruction INPUT,
WHILE (SQL) 574 spcification 548
WHILE (Transact-SQL) 700 page de code de linstruction OUTPUT,
instruction prpare spcification 585
excution 491 profilage des procdures 872
suppression 483 return codes 498
instruction SQL interblocage
clause GROUP BY 535 sa_report_deadlocks, procdure systme 867
instruction, tiquette interblocage, signalement
gnralits 270 sa_report_deadlocks, procdure systme 867
instruction, syntaxe interception
clause GROUP BY 535 erreur dans Embedded SQL 699
INT, type de donnes INTERSECT, opration
gnralits 65 syntaxe SQL 558
INTEGER, type de donnes intersection
gnralits 65 rsultat de plusieurs instructions SELECT 558
INTEGRATED LOGIN, autorisation Interval, condition dvnement
instruction GRANT 524 gnralits 153
intgrit INTO, clause
contrainte 431 instruction SELECT 629
intgrit rfrentielle INTTOHEX, fonction
action 434 syntaxe SQL 175
clause FROM 512 IS
Interactive SQL logique ternaire 31
codage de linstruction READ, spcification 598 oprateur logique, description 13
connexion une base de donnes 345 IS FALSE, condition
chappement des caractres dans les chanes 10 syntaxe SQL 30
instruction BYE 498 IS NOT NULL, condition
instruction CONFIGURE 343 syntaxe SQL 30
instruction CONNECT 344 IS NULL, condition
instruction DISCONNECT 473 syntaxe SQL 30
instruction EXIT 498 IS TRUE, condition
instruction HELP 539 syntaxe SQL 30
instruction INPUT 545 IS UNKNOWN, condition
instruction OUTPUT 582 syntaxe SQL 30
instruction PARAMETERS 587 ISDATE, fonction
instruction QUIT 498 syntaxe SQL 175
instruction READ 598 ISNULL, fonction

933
Index

syntaxe SQL 176 reprise de lexcution des procdures 610


ISNUMERIC, fonction slection partir de procdures stockes 513
syntaxe SQL 177 variable 391, 589
itration variables 471
curseur 507 jointure
clause FROM 511
J quivalence ANSI 221
mise jour 685, 690, 691
JAR, fichier
suppression des lignes bases sur des jointures465
installation 555
jour de la semaine
suppression 603
fonction DOW 148
Java
jour du calendrier julien 140
conversion Java et SQL 86
journal de point de reprise
fonction dfinie par lutilisateur 100
instruction SQL CHECKPOINT 335
installation 555
journal de transactions
tables systme 794
allocation despace 280
Java dans la base de donnes
analyse du journal des demandes 837, 838
configuration dune base de donnes 275
dtermination de lespace disponible 830
installation de classes 555
instruction TRUNCATE TABLE 674
instruction CREATE DATABASE 354
sauvegarde 319
mise niveau dune base de donnes 275
suppression 275 K
suppression de classes 603
Java, machine virtuelle KEY JOIN
arrt 666 syntaxe SQL 511
dmarrage 658
Java, signature L
exemple 381 lancement
instruction CREATE PROCEDURE 396 transaction dfinie par lutilisateur 327
Java, type de donnes langage
conversion en SQL 86, 87 syntaxe SQL 4
jConnect LAST USER
instruction CREATE DATABASE 354 valeur spciale 37
JDBC LCASE, fonction
conversion de type de donnes Java en SQL 86 syntaxe SQL 177
conversion de type de donnes SQL en Java 87 lct_admin, fonction Adaptive Server Enterprise 106
conversion des types de donnes 86 LEAVE, instruction
mise niveau dune base de donnes 275 syntaxe SQL 560
jeu de caractres lecture
fonction SORTKEY 229 valeurs texte et image de la base de donnes 600
stockage 56 lecture dinstructions SQL partir de fichiers 598
jeu de caractres cods sur plusieurs octets lecture de fichiers
dchargement de donnes 566, 680 procdure stocke 902, 904
jeu de caractres, conversion lecture seule
mot de passe 524 verrouillage de tables 572
jeu de rsultats LEFT OUTER JOIN
dchargement 678 syntaxe SQL 511
forme 471 LEFT, fonction

934
Index

syntaxe SQL 178 syntaxe SQL 572


LENGTH, fonction LOG, fonction
syntaxe SQL 178 syntaxe SQL 183
LESSER, fonction LOG10, fonction
syntaxe SQL 179 syntaxe SQL 183
libration logarithme en base 10
curseurs 452 LOG10 183
point de sauvegarde 601 LogFreePercent, condition dvnement
zone descripteur 453 gnralits 153
ligne LogFreeSpace, condition dvnement
dchargement 678 gnralits 153
extraction par curseur 502 login
insertion dans des tables 551 affectation pour serveur distant 374
insertion en mode bulk 563 suppression pour les serveurs distants 478
insertion via un curseur 594 login externe
limitation du nombre renvoy 627 affectation pour serveur distant 374
mise jour 683 logique ternaire
slection 627 syntaxe SQL 31
suppression de la base de donnes 465 valeur NULL 52
suppression de toutes les lignes dune table 674 LogSize, condition dvnement
suppression des curseurs 467 gnralits 153
LIKE, condition LONG BINARY, type de donnes
classement 27 gnralits 78
distinction majuscules/minuscules 27 LONG VARCHAR, type de donnes
longueur maximale du masque 27 gnralits 58
syntaxe SQL 26 LONG_ULPLAN, fonction
limitation des lignes 627 syntaxe SQL 184
limitation du nom de lignes renvoyes 627 longueur de chane
LIST, fonction LENGTH 178
syntaxe SQL 179 LOOP, instruction
liste de slection syntaxe SQL 574
description des curseurs 469 LOWER, fonction
liste de tables syntaxe SQL 184
clause FROM 512 LTRIM, fonction
listes syntaxe SQL 185
syntaxe de la fonction LIST 179
listes spares par des virgules M
syntaxe de la fonction LIST 179
machine virtuelle Java
LivenessTimeout, proprit
arrt 666
paramtre avec sa_server_option 873
dmarrage 658
LOAD STATISTICS, instruction
majuscules/minuscules
syntaxe SQL 562
catalogue 744
LOAD TABLE, instruction
MAPI
syntaxe SQL 563
code de retour 898
LOCATE, fonction
procdure stocke tendue 895
syntaxe SQL 182
MAPI, type de message
LOCK TABLE, instruction
gnralits 292, 405, 480

935
Index

masque de correspondance instruction ALTER SYNCHRONIZATION


caractre joker 202 USER 303
classement 27 instruction CREATE PUBLICATION 402
condition LIKE 26 instruction CREATE SYNCHRONIZATION
distinction majuscules/minuscules 27 SUBSCRIPTION 419
fonction PATINDEX 202 instruction CREATE SYNCHRONIZATION
longueur maximale 27 USER 422
MAX, fonction instruction DROP PUBLICATION 479
syntaxe SQL 185 instruction DROP SYNCHRONIZATION
MEMBERSHIP, clause SUBSCRIPTION 486
octroi dautorisations 524 instruction START SYNCHRONIZATION
mmoire DELETE 662
allocation pour zones descripteur 273 instruction STOP SYNCHRONIZATION
message DELETE 669
affichage 575 MOD, fonction
cration 388 syntaxe SQL 188
cration de type distant 405 mode bulk
modification de type distant 292 dchargement de tables 680
suppression de type distant 480 mode bulk, chargement de tables 563
message derreur mode de stockage des dates 89
fonction ERRORMSG 150 mode non chan
MESSAGE, instruction instruction BEGIN TRANSACTION 327
syntaxe SQL 575 mode passthrough
MIME base64 dmarrage 588
codage de donnes 114 mode transactionnel
dcodage de donnes 114 chan 327
MIN, fonction non chan 327
syntaxe SQL 186 mode transactionnel chan
MINUTE, fonction instruction BEGIN TRANSACTION 327
syntaxe SQL 186 modle destimation des cots
MINUTES, fonction talonnage du serveur 275
syntaxe SQL 187 rtalonnage 275
miroir de journal de transactions modle Disk Transfer Time
dtermination de lespace disponible 830 talonnage 275
mise jour restauration de la valeur par dfaut 275
base sur des jointures 685 modifiable, vue 552
colonne et table 690 modification
colonne sans consignation 701 attribut de serveur distant 294
jointure 691 base de donnes 275
ligne 683 dbspace 280
publication et souscription 686 domaine 282
mise niveau vnement 283
bases de donnes 275 fichier dcriture 317
MobiLink fonction 285
instruction ALTER PUBLICATION 290 index 286
instruction ALTER SYNCHRONIZATION instruction ALTER PUBLICATION 290
SUBSCRIPTION 301 mot de passe 524

936
Index

octroi dautorisations 524 syntaxe SQL 193


procdure 288 NEXT_HTTP_VARIABLE, fonction
services Web 297 syntaxe SQL 194
table 305 niveau disolement
trigger 313 curseur 580
type de donnes 282 niveau instruction, trigger 440
type de message distant 292 niveau ligne, trigger 440
vue 315 NO RESULT SET, clause
MONEY, type de donnes gnralits 392, 400
gnralits 69 NO SCROLL, curseur
MONTH, fonction dclaration 456
syntaxe SQL 188 nom
MONTHNAME, fonction colonne 18
syntaxe SQL 189 nom de base de donnes
MONTHS, fonction fonction DB_NAME 142
syntaxe SQL 189 nom de colonne
mot syntaxe SQL 18
rserv 4 nom de colonne long 470
mot de passe extraction 470
changement 524 nom de colonnes dans des expressions 18
conversion du jeu de caractres 524 nom de produit
longueur maximale 524 extraction 901
restrictions 525 nom de rle
sa_verify_password, procdure systme 883 cl trangre 433
table systme 788 gnralits 432
mot rserv nombre alatoire
syntaxe SQL 4 fonction RAND 209
utilisation comme identificateur 22 nombre de lignes
mot-cl table systme 779
syntaxe SQL 4 NOT
moteur logique ternaire 31
arrt de base de donnes 665 oprateur binaire 15
dmarrage de base de donnes 657 oprateur logique, description 13
moyenne, fonction nouvelle indication
fonction AVG 113 exception 607
multiligne, insertion 491 NOW, fonction
syntaxe SQL 194
N NULL
compatibilit avec Adaptive Server Enterprise 53
NATURAL JOIN
fonction ISNULL 176
syntaxe SQL 511
gnralits 52
NEWID, fonction
logique ternaire 31, 52
syntaxe SQL 190
oprateur ensembliste 53
NEXT_CONNECTION, fonction
valeur NULL 52
syntaxe SQL 191
NULL, valeur
NEXT_DATABASE, fonction
clause DISTINCT 53
syntaxe SQL 193
NULLIF, fonction
NEXT_HTTP_HEADER, fonction

937
Index

gnralits 195 ON, phrase


utilisation avec les expressions CASE 21 condition de recherche 24
NUMBER, fonction ON_TSQL_ERROR, option
mise jour 685, 690 et clause ON EXCEPTION RESUME 392
syntaxe SQL 196 OPEN, instruction
NUMERIC, type de donnes syntaxe SQL 579
gnralits 65 OPENXML, fonction
numrique, type de donnes syntaxe SQL 197
gnralits 61 oprateur
numro dutilisateur arithmtique 14
table systme 788 binaire 15
numro de table chane 14
table systme 779 gnralits 12
numro de version logique, description 13
extraction 901 oprateur de comparaison 12
priorit des oprateurs 16
O oprateur %
fonction modulo 188
object_id, fonction Adaptive Server Enterprise 106
oprateur arithmtique
object_name, fonction Adaptive Server Enterprise
compatibilit avec Adaptive Server Enterprise 14
106
oprateur binaire
objet binaire volumineux
syntaxe SQL 15
exemple dinstruction SET 636
oprateur de comparaison
exportation 904
compatibilit avec Adaptive Server Enterprise 12
importation de fichiers BCP gnrs par ASE 566
compatibilit Transact-SQL 12
instruction GET DATA SQL 518
conversion de donnes 83
journal de transactions 280
syntaxe SQL 12
type de donnes binaire 78
oprateur de jointure
objet binaire volumineux (BLOB)
compatibilit avec ASE 16
insertion 902
oprateur de type chane
objet de base de donnes
compatibilit avec Adaptive Server Enterprise 15
commentaire 339
syntaxe SQL 14
identification 8
oprateur ensembliste
octroi
NULL 53
autorisation 524
oprateur logique
autorisation CONSOLIDATE 529
compatibilit avec Adaptive Server Enterprise 14
autorisation DBA distant 534
logique ternaire 31
autorisation PUBLISH 531
syntaxe SQL 13
autorisation REMOTE 532
optimisation
ODBC
dfinition de tables existantes 371
dclaration de curseurs statiques 456
optimisation de niveau index
OLAP
clause FROM 512
fonction GROUPING 165
optimisation de niveau table
opration CUBE 535
clause FROM 514
opration GROUPING SETS 535
optimiseur
opration ROLLUP 535
estimation de slectivit explicite 32
ON EXCEPTION RESUME, clause
instruction CREATE STATISTICS 416
gnralits 392

938
Index

optimiseur, plan P
extraction dune spcification de texte 500
package
optimiseur, statistique
installation de classes Java 555
suppression 484
suppression de classes Java 603
option
page
compatibilit avec Transact-SQL 893
affichage des paramtres pour PCTFREE 712
dfinition 644
page de code
dfinition dans Interactive SQL 647
instruction INPUT 548
dfinition dans Transact-SQL 637
instruction OUTPUT 585
dfinition des options Interactive SQL 343
stockage des donnes 56
extraction de valeurs 522
table systme SYSCOLLATION 719
gnralits 644
page de codes
paramtre de dmarrage 883, 893
instruction CREATE DATABASE 352
QUOTED_IDENTIFIER et comptabilit T-SQL
PARAMETERS, instruction
22
syntaxe SQL 587
table systme 753
paramtre
vue systme 800, 807
fichier de commandes Interactive SQL 587
option de base de donnes
paramtre de contrle de message
compatibilit avec Transact-SQL 893
dfinition 648
DATE_ORDER et date sans quivoque 74
partie de date
dfinition dans Transact-SQL 637
gnralits 99
paramtres initiaux et procdure systme
PASSTHROUGH, instruction
sp_login_environment 883
syntaxe SQL 588
paramtres initiaux et procdure systme
passthrough, mode
sp_tsql_environment 893
arrt 588
QUOTED_IDENTIFIER et comptabilit T-SQL
instruction PASSTHROUGH (SQL Remote) 588
22
PATINDEX, fonction
option de ligne de commande
syntaxe SQL 202
remplacement 872
PCTFREE, paramtre
option distante
table systme 712
instruction SET REMOTE OPTION (SQL
pente
Remote) 648
droite de rgression 215
option temporaire
PERCENT_RANK, fonction
dfinition 644
syntaxe SQL 203
dfinition dans Interactive SQL 647
performances
OR
mise jour 691
logique ternaire 31
rtalonnage du modle destimation des cots
oprateur binaire 15
dE/S 277
oprateur logique, description 13
rtalonnage du serveur 275
ORDER BY, clause 631
rservation despace 280
ordre des oprations
statistiques de compression 817
priorit des oprateurs SQL 16
PI, fonction
OU exclusif
syntaxe SQL 204
oprateur binaire 15
plan
OUTPUT, instruction
curseur 159, 163, 204
syntaxe SQL 582
extraction dune spcification de texte 500
syntaxe SQL 159, 163, 204

939
Index

plan daccs aux donnes priorit des oprateurs


extraction dune spcification de texte 500 syntaxe SQL 16
PLAN, fonction proc_role, fonction Adaptive Server Enterprise 106
syntaxe SQL 204 procdure 589
planification appel 330
cration dvnement 364 appel de fonction externe 377, 393
vnement 283, 364 catalogue, liste 815
WAITFOR 697 cration 390
planification, vnement cration dans Transact-SQL 400
dclenchement 673 tendue 895
point de reprise excution dune procdure stocke dans
base de donnes 335 Transact-SQL 493
point de sauvegarde excution dans SQL dynamique 495
annulation 622 instruction SQL CREATE PROCEDURE 400
cration 626 jeu de rsultats variable 391, 471
libration 601 modification 288
position de chane renvoi de valeurs 611
LOCATION 182 rplication 288
positionne, instruction DELETE reprise dexcution 610
syntaxe SQL 467 slection 513
POWER, fonction signalisation des erreurs dansTransact-SQL 596
syntaxe SQL 205 sortie 611
prdicat suppression 474
condition ANY ou ALL 25 systme 813
condition BETWEEN 26 Transact-SQL, liste 906
condition EXISTS 30 procdure catalogue
condition IN 29 gnralits 813
condition IS NULL 30 liste 815
condition IS TRUE ou FALSE 30 procdure catalogue (ASE)
condition IS UNKNOWN 30 sp_special_columns 908
condition LIKE 26 Transact-SQL 906
estimation de slectivit explicite 32 procdure distante
logique ternaire 31 cration 390, 394
oprateur de comparaison 12 cration dans Transact-SQL 400
sous-requte SQL 25 procdure proxy
syntaxe SQL 24 cration 390
prparation procdure stocke
commit deux phases 592 affichage des donnes de profilage 861, 864
instruction 589 appel de fonction externe 377, 393
PREPARE TO COMMIT, instruction autorisations 895
syntaxe SQL 592 conversion de T-SQL 250
PREPARE, instruction cration 390
syntaxe SQL 589 cration dans Transact-SQL 400
PRINT, instruction tendue 895
syntaxe Transact-SQL 593 excution dans SQL dynamique 495
priorit excution dans Transact-SQL 493
oprateur SQL 16 procdure systme 813

940
Index

sa_audit_string 815 sp_remote_columns 884


sa_conn_activity 816 sp_remote_exported_keys 886
sa_conn_compression_info 817 sp_remote_imported_keys 888
sa_conn_info 820 sp_remote_primary_keys 889
sa_conn_properties_by_name 825 sp_remote_tables 891
sa_db_info 826 sp_servercaps 892
sa_db_properties 828 sp_tsql_environment 893
sa_disable_auditing_type 829 xp_cmdshell 901
sa_disk_free_space 830 xp_msver 901
sa_enable_auditing_type 831 xp_read_file 902
sa_eng_properties 832 xp_scanf 903
sa_flush_cache 833 xp_sendmail 897
sa_flush_statistics 834 xp_sprintf 903
sa_get_dtt 834 xp_startmail 896
sa_get_histogram 835 xp_startsmtp 896
sa_get_request_profile 837 xp_stopmail 898
sa_get_request_times 838 xp_stopsmtp 898
sa_get_server_messages 839 xp_write_file 904
sa_http_header_info 840 procdure stocke systme et catalogue 815
sa_http_variable_info 841 procdure systme
sa_index_density 841 affichage de la dfinition 814
sa_index_levels 843 catalogue 815
sa_java_loaded_classes 845 cration de messages 388
sa_locks 846 tendue 895
sa_make_object 848 gnralits 813
sa_migrate 850 prsentation 814
sa_migrate_create_fks 853 sa_audit_string 815
sa_migrate_create_remote_fks_list 855 sa_check_commit 815
sa_migrate_create_remote_table_list 856 sa_conn_activity 816
sa_migrate_create_tables 858 sa_conn_compression_info 817
sa_migrate_data 859 sa_conn_info 820
sa_migrate_drop_proxy_tables 860 sa_conn_properties 823, 824
sa_procedure_profile 861 sa_conn_properties_by_name 825
sa_procedure_profile_summary 864 sa_db_info 826
sa_recompile_views 867 sa_db_properties 828
sa_report_deadlocks 867 sa_disable_auditing_type 829
sa_reset_identity 869 sa_disk_free_space 830
sa_server_option 872 sa_enable_auditing_type 831
sa_set_http_header 878 sa_eng_properties 832
sa_set_http_option 879 sa_flush_cache 833
sa_statement_text 879 sa_flush_statistics 834
sa_table_fragmentation 880 sa_get_dtt 834
sa_table_page_usage 881 sa_get_histogram 835
sa_validate 882 sa_get_request_profile 837
sa_verify_password 883 sa_get_request_times 838
slection 513 sa_get_server_messages 839
sp_login_environment 883 sa_http_header_info 840

941
Index

sa_http_variable_info 841 xp_stopsmtp 898


sa_index_density 841 xp_write_file 904
sa_index_levels 843 procdure systme et fonction
sa_java_loaded_classes 845 gnralits 813
sa_locks 846 procdure, appel 330
sa_make_object 848 Procedure_profiling
sa_migrate 850 dfinition avec sa_server_option 874
sa_migrate_create_fks 853 profilage des procdures
sa_migrate_create_remote_fks_list 855 activation depuis Interactive SQL 874
sa_migrate_create_remote_table_list 856 affichage dans Interactive SQL 861, 864, 872
sa_migrate_create_tables 858 dsactivation depuis Interactive SQL 874
sa_migrate_data 859 synthse des procdures 861, 864
sa_migrate_drop_proxy_tables 860 ProfileFilterConn, proprit
sa_procedure_profile 861 dfinition avec sa_server_option 874
sa_procedure_profile_summary 864 ProfileFilterUser, proprit
sa_recompile_views 867 dfinition avec sa_server_option 874
sa_report_deadlocks 867 PROPERTY, fonction
sa_reset_identity 869 syntaxe SQL 206
sa_rowgenerator 869 PROPERTY_DESCRIPTION, fonction
sa_send_udp 871 syntaxe SQL 206
sa_server_option 872 PROPERTY_NAME, fonction
sa_set_http_header 878 syntaxe SQL 207
sa_set_http_option 879 PROPERTY_NUMBER, fonction
sa_statement_text 879 syntaxe SQL 207
sa_table_fragmentation 880 proprits
sa_table_page_usage 881 serveur 206
sa_validate 882 PUBLIC, groupe
sa_verify_password 883 table systme 789
sp_login_environment 883 publication
sp_remote_columns 884 instruction ALTER PUBLICATION 290
sp_remote_exported_keys 886 instruction CREATE PUBLICATION 402
sp_remote_imported_keys 888 instruction DROP PUBLICATION 479
sp_remote_primary_keys 889 instruction UPDATE 686
sp_remote_tables 891 instruction UPDATE (SQL Remote) 692
sp_servercaps 892 PUBLISH, autorisation
sp_tsql_environment 893 octroi 531
Sybase Central 814 rvocation 617
Transact-SQL 906 PURGE, clause
xp_cmdshell 901 instruction FETCH 504
xp_msver 901 PUT, instruction
xp_read_file 902 syntaxe SQL 594
xp_scanf 903
xp_sendmail 897 Q
xp_sprintf 903
qualit de lajustement
xp_startmail 896
droite de rgression 214
xp_startsmtp 896
QUARTER, fonction
xp_stopmail 898
syntaxe SQL 208

942
Index

QUIT, instruction table sous-jacente latrale 513


syntaxe SQL 498 REFERENCES, autorisation
quitter octroi 524
Interactive SQL 498 refus
QuittingTime, proprit octroi dautorisations 524, 613
dfinition avec sa_server_option 874 rgle
QUOTED_IDENTIFIER, option syntaxe SQL 4
compatibilit ASE 637 REGR_AVGX, fonction
compatibilit des expressions T-SQL 22 syntaxe SQL 210
QUOTES, option REGR_AVGY, fonction
instruction LOAD TABLE 566 syntaxe SQL 211
REGR_COUNT, fonction
R syntaxe SQL 212
REGR_INTERCEPT, fonction
R au carr
syntaxe SQL 213
droites de rgression 214
REGR_R2, fonction
racine carre, fonction
syntaxe SQL 214
SQRT 234
REGR_SLOPE, fonction
RADIANS, fonction
syntaxe SQL 215
syntaxe SQL 208
REGR_SXX, fonction
RAISERROR, instruction
syntaxe SQL 216
syntaxe Transact-SQL 596
REGR_SXY, fonction
RAND, fonction
syntaxe SQL 217
syntaxe SQL 209
REGR_SYY, fonction
rang, fonction
syntaxe SQL 217
CUME_DIST 133
rgression, fonction
DENSE_RANK 147
REGR_AVGX 210
PERCENT_RANK 203
REGR_AVGY 211
RANK 209
REGR_COUNT 212
ROW_NUMBER 224
REGR_INTERCEPT 213
RANK, fonction
REGR_R2 214
syntaxe SQL 209
REGR_SLOPE 215
rapport
REGR_SXX 216
erreur 596, 654
REGR_SXY 217
erreur dans Transact-SQL 596
REGR_SYY 217
exception 607
regroupement
READ, instruction
activation 652
syntaxe SQL 598
instruction 324
READTEXT, instruction
relation
syntaxe Transact-SQL 600
table systme 737
REAL, type de donnes
RELEASE SAVEPOINT, instruction
gnralits 66
syntaxe SQL 601
rtalonnage du modle destimation des cots 275
REMAINDER, fonction
rfrence de vue
syntaxe SQL 218
dchargement/rechargement de la base de
RememberLastStatement, proprit
donnes 867
dfinition avec sa_server_option 874
rfrence externe
REMOTE JAVA, instruction
clause FROM 513

943
Index

syntaxe SQL 603 octroi 524


REMOTE RESET, instruction restauration
syntaxe SQL 602 base de donnes archive 608
REMOTE, autorisation LOAD TABLE 568
octroi 532 RESTORE DATABASE, instruction
rvocation 619 syntaxe SQL 608
remoteoption, table RESTRICT, action
gnralits 766 instruction CREATE TABLE 434
remplacement dobjet RESUME, instruction
sa_make_object 848 syntaxe SQL 610
remplissage des chanes laide de blancs RETURN,instruction
instruction CREATE DATABASE 353 syntaxe SQL 611
renvoi rvocation
valeur de procdure 611 autorisation 613
rorganisation autorisation CONSOLIDATE 616
table 604 autorisation DBA distant 620
REORGANIZE TABLE, instruction autorisation PUBLISH 617
syntaxe SQL 604 autorisation REMOTE 619
REPEAT, fonction REVOKE CONSOLIDATE, instruction
syntaxe SQL 219 syntaxe SQL 616
REPLACE, fonction REVOKE PUBLISH, instruction
syntaxe SQL 219 syntaxe SQL 617
REPLICATE, fonction REVOKE REMOTE DBA, instruction
syntaxe SQL 220 syntaxe SQL 620
rplication REVOKE REMOTE, instruction
procdures 288 syntaxe SQL 619
reprise REVOKE, instruction
excution de procdures 610 syntaxe SQL 613
RequestFilterConn, proprit REWRITE, fonction
paramtre avec sa_server_option 875 syntaxe SQL 221
RequestFilterDB, proprit RIGHT OUTER JOIN
dfinition avec sa_server_option 875 syntaxe SQL 511
RequestLogFile, proprit RIGHT, fonction
dfinition avec sa_server_option 876 syntaxe SQL 223
RequestLogging, proprit ROLLBACK TO SAVEPOINT, instruction
dfinition avec sa_server_option 876 syntaxe SQL 622
RequestLogMaxSize, proprit ROLLBACK TRANSACTION, instruction
dfinition avec sa_server_option 877 syntaxe SQL 623
RequestLogNumFiles, proprit ROLLBACK TRIGGER, instruction
dfinition avec sa_server_option 877 syntaxe SQL 624
reserved_pgs, fonction Adaptive Server Enterprise ROLLBACK, instruction
106 syntaxe SQL 621
RESIGNAL, instruction ROLLUP, opration
syntaxe SQL 607 clause GROUP BY 535
rsolution de conflits fonction GROUPING 165
fonction CONFLICT pour SQL Remote 123 ROUND, fonction
RESOURCE, droits syntaxe SQL 223

944
Index

ROW_NUMBER, fonction sa_get_request_times, procdure systme


syntaxe SQL 224 syntaxe 838
rowcnt, fonction Adaptive Server Enterprise 106 sa_get_server_messages, procdure systme
ROWCOUNT, option syntaxe 839
compatibilit ASE 637 sa_http_header_info, procdure systme
RowGenerator, table systme syntaxe 840
gnralits 709 sa_http_variable_info, procdure systme
RTRIM, fonction syntaxe 841
syntaxe SQL 225 sa_index_density, procdure systme
syntaxe 841
S sa_index_levels, procdure systme
syntaxe 843
sa_audit_string, procdure systme
sa_java_loaded_classes, procdure systme
syntaxe 815
syntaxe 845
sa_check_commit, procdure systme
sa_locks, procdure systme
syntaxe 815
syntaxe 846
sa_conn_activity, procdure systme
sa_make_object, procdure systme
syntaxe 816
syntaxe 848
sa_conn_compression_info, procdure systme
sa_migrate, procdure systme
syntaxe 817
syntaxe 850
sa_conn_info, procdure systme
sa_migrate_create_fks, procdure systme
syntaxe 820
syntaxe 853
sa_conn_properties, procdure systme
sa_migrate_create_remote_fks_list, procdure
syntaxe 823, 824
systme
sa_conn_properties_by_name, procdure systme
syntaxe 855
syntaxe 825
sa_migrate_create_remote_table_list, procdure
sa_db_info, procdure systme
systme
syntaxe 826
syntaxe 856
sa_db_properties, procdure systme
sa_migrate_create_tables, procdure systme
syntaxe 828
syntaxe 858
sa_disable_auditing_type, procdure systme
sa_migrate_data, procdure systme
syntaxe 829
syntaxe 859
sa_disk_free_space, procdure systme
sa_migrate_drop_proxy_tables, procdure systme
syntaxe 830
syntaxe 860
sa_enable_auditing_type, procdure systme
sa_procedure_profile, procdure systme
syntaxe 831
syntaxe 861
sa_eng_properties, procdure systme
sa_procedure_profile_summary, procdure systme
syntaxe 832
syntaxe 864
sa_flush_cache, procdure systme
sa_recompile_views, procdure systme
syntaxe 833
syntaxe 867
sa_flush_statistics, procdure systme
sa_report_deadlocks, procdure systme
syntaxe 834
syntaxe 867
sa_get_dtt, procdure systme
sa_reset_identity, procdure systme
syntaxe 834
syntaxe 869
sa_get_histogram, procdure systme
sa_rowgenerator, procdure systme
syntaxe 835
syntaxe 869
sa_get_request_profile, procdure systme
sa_send_udp, procdure systme
syntaxe 837

945
Index

syntaxe 871 slection partir de procdures stockes 513


sa_server_option, procdure systme syntaxe SQL 627
syntaxe 872 slection
sa_set_http_header, procdure systme constitution dintersections 558
syntaxe 878 constitution dunions 676
sa_set_http_option, procdure systme constitution de diffrences entre jeux 489
syntaxe 879 ligne 627
sa_statement_text, procdure systme pour dchargement 678
syntaxe 879 slectivit, estimation
sa_table_fragmentation, procdure systme dfinie par lutilisateur 32
syntaxe 880 SELF_RECURSION, option
sa_table_page_usage, procdure systme compatibilit ASE 637
syntaxe 881 SEND AT, clause 529, 532
sa_validate, procdure systme PUBLISH 531
syntaxe 882 SEND EVERY, clause 529, 532
sa_verify_password, procdure systme squence dchappement hexadcimale
syntaxe 883 dans les chanes SQL 10
saturation, espace disque squence de classement voir aussi classement
cration dvnement 364 condition LIKE 27
sauvegarde instruction CREATE DATABASE 352
cration 319 table systme SYSCOLLATION 719
cration dvnement 364 serveur
instruction BACKUP 319 arrt de base de donnes 665
restauration de bases de donnes 608 cration 409
sur bande 319 cration sur le Web 412
sauvegarde darchivage dmarrage de base de donnes 657
systme dexploitation support 319 distant, suppression 481
SAVE TRANSACTION, instruction modification des attributs dun serveur distant 294
syntaxe SQL 625 modification des services Web 297
SAVEPOINT, instruction suppression sur le Web 482
syntaxe SQL 626 serveur de base de donnes
schma dmarrage 657
cration 407 option 872
table systme 705 serveur distant
schma de base de donnes affectation de logins 374
gnralits 705 cration de tables 425
SCROLL, curseur dconnexion 294
dclaration 456 envoi dinstructions SQL 509
SECOND, fonction fonctionnalit 716, 717, 892
syntaxe SQL 225 modification des attributs 294
SECONDS, fonction suppression 481
syntaxe SQL 226 suppression de logins 478
scurit serveur inactif
rplication 534, 620 cration dvnement 364
SELECT, autorisation serveur Web
instruction GRANT 524 modification des services 297
SELECT, instruction service

946
Index

ajout de commentaires 339 indicateur de commentaires 51


cration sur le Web 412 SIMILAR, fonction
modification Web 297 syntaxe SQL 228
suppression sur le Web 482 SIN, fonction
service Web syntaxe SQL 229
ajout de commentaires 339 SKIP, option
services Web instruction LOAD TABLE 567
table systme 792 SMALLDATETIME, type de donnes
SET CONNECTION, instruction gnralits 76
syntaxe SQL 641 SMALLINT, type de donnes
SET DEFAULT, action gnralits 66
instruction CREATE TABLE 434 SMALLMONEY, type de donnes
SET DESCRIPTOR, instruction gnralits 69
syntaxe SQL 642 SMTP
SET NULL, action code de retour 899
instruction CREATE TABLE 434 procdure stocke tendue 895
SET OPTION, instruction SOME
syntaxe Interactive SQL 647 condition et syntaxe SQL 25
syntaxe SQL 644 sortie
syntaxe Transact-SQL 637 Interactive SQL 498
SET PERMANENT, instruction procdure 611
syntaxe Interactive SQL 647 SORTKEY, fonction
SET REMOTE OPTION, instruction syntaxe SQL 229
syntaxe SQL 648 SOUNDEX, fonction
SET SQLCA, instruction syntaxe SQL 232
syntaxe SQL 650 sous-chane
SET TEMPORARY OPTION, instruction gnralits 239
syntaxe Interactive SQL 647 remplacement 219
syntaxe SQL 644 souscription
SET, instruction instruction ALTER SYNCHRONIZATION
syntaxe SQL 635 SUBSCRIPTION 301
syntaxe Transact-SQL 637 instruction CREATE SUBSCRIPTION (SQL
SETUSER, instruction Remote) 417
syntaxe SQL 652 instruction CREATE SYNCHRONIZATION
SHORT_ULPLAN, fonction SUBSCRIPTION 419
syntaxe SQL 227 instruction DROP SUBSCRIPTION 485
show_role, fonction Adaptive Server Enterprise 106 instruction DROP SYNCHRONIZATION
SIGN, fonction SUBSCRIPTION 486
syntaxe SQL 228 instruction REMOTE RESET (SQL Remote) 602
SIGNAL, instruction instruction START SUBSCRIPTION (SQL
syntaxe SQL 654 Remote) 660
signature instruction STOP SUBSCRIPTION (SQL
exemple Java 381 Remote) 668
mthode Java 396 instruction SYNCHRONIZE SUBSCRIPTION
signature de mthode (SQL Remote) 671
Java 396 instruction UPDATE 686
signe de pourcentage instruction UPDATE (SQL Remote) 692

947
Index

souscription, synchronisation sp_droptype, procdure systme 906


instruction SYNCHRONIZE SUBSCRIPTION sp_dropuser
(SQL Remote) 671 procdure systme 906
sous-requte sp_dropuser, procdure systme 906
dans les conditions de recherche SQL 25 sp_fkeys
syntaxe SQL 19 procdure catalogue (ASE) 908
SP sp_fkeys, procdure catalogue 908
indicateur dinstruction 271 sp_getmessage
sp_addgroup procdure systme 906
procdure systme 906 sp_getmessage, procdure systme 906
sp_addgroup, procdure systme 906 sp_helptext
sp_addlogin procdure systme 906
procdure systme 906 sp_helptext, procdure systme 906
sp_addlogin, procdure systme 906 sp_login_environment, procdure systme
sp_addmessage syntaxe 883
procdure systme 906 sp_password
sp_addmessage, procdure systme 388, 906 procdure systme 906
sp_addtype sp_password, procdure systme 906
procdure systme 906 sp_pkeys
sp_addtype, procdure systme 906 procdure catalogue (ASE) 908
sp_adduser sp_pkeys, procdure catalogue 908
procdure systme 906 sp_remote_columns, procdure systme
sp_adduser, procdure systme 906 syntaxe 884
sp_changegroup sp_remote_exported_keys, procdure systme
procdure systme 906 syntaxe 886
sp_changegroup, procdure systme 906 sp_remote_imported_keys, procdure systme
sp_column_privileges syntaxe 888
procdure catalogue 908 sp_remote_primary_keys, procdure systme
procdure catalogue (ASE) 908 syntaxe 889
sp_column_privileges, procdure catalogue 908 sp_remote_tables, procdure systme
sp_columns syntaxe 891
procdure catalogue (ASE) 908 sp_servercaps, procdure systme
sp_columns, procdure catalogue 908 syntaxe 892
sp_dboption sp_special_columns, procdure catalogue 908
procdure systme 906 sp_sproc_columns
sp_dboption, procdure systme 906 procdure catalogue (ASE) 908
sp_dropgroup sp_sproc_columns, procdure catalogue 908
procdure systme 906 sp_stored_procedures
sp_dropgroup, procdure systme 906 procdure catalogue (ASE) 908
sp_droplogin sp_stored_procedures, procdure catalogue 908
procdure systme 906 sp_tables
sp_droplogin, procdure systme 906 procdure catalogue (ASE) 908
sp_dropmessage sp_tables, procdure catalogue 908
procdure systme 906 sp_tsql_environment, procdure systme
sp_dropmessage, procdure systme 906 syntaxe 893
sp_droptype SPACE, fonction
procdure systme 906 syntaxe SQL 233

948
Index

SQL COVAR_SAMP 131


liste alphabtique de toutes les instructions 261 CUME_DIST 133
SQL Anywhere Studio DATALENGTH 134
documentation xii DATE 135
SQL dynamique date et heure 98
excution de procdures 495 DATEADD 135
SQL Remote DATEDIFF 136
article 710, 711 DATEFORMAT 137
cration de souscription 417 DATENAME 138
dfinition des options distantes 648 DATEPART 139
tables systme 710, 711 DATETIME 139
SQL Remote, table systme DAY 139
remoteoption 766 DAYNAME 140
remoteoptiontype 767 DAYS 140
SQL, fonction DB_ID 141
ABS 110 DB_NAME 142
ACOS 110 DB_PROPERTY 143
agrgat 96 DECOMPRESS 144
ARGN 111 DECRYPT 145
ASCII 111 dfinie par lutilisateur 100
ASIN 112 DEGREES 146
ATAN 112 DENSE_RANK 147
ATAN2 113 DIFFERENCE 148
ATN2 113 diverse 101
AVG 113 DOW 148
BASE64_DECODE 114 ENCRYPT 149
BASE64_ENCODE 114 ERRORMSG 150
BYTE_LENGTH 115 ESTIMATE 151
BYTE_SUBSTR 115 ESTIMATE_SOURCE 152
CAST 116 EVENT_CONDITION 153
CEILING 117 EVENT_CONDITION_NAME 155
chane 104 EVENT_PARAMETER 155
CHAR 117 EXP 158
CHAR_LENGTH 119 EXPERIENCE_ESTIMATE 158
CHARINDEX 118 EXPLANATION 159
COALESCE 119 FLOOR 160
COMPARE 119 GET_IDENTITY 161
COMPRESS 121 GETDATE 162
CONFLICT, syntaxe de la fonction 123 GRAPHICAL_PLAN 163
CONNECTION_PROPERTY 122 GRAPHICAL_ULPLAN 164
conversion de types de donnes 97 GREATER 165
CONVERT 125 HASH 166
CORR 127 HEXTOINT 167
COS 128 HOUR 167
COT 129 HOURS 168
COUNT 129 HTML_DECODE 169
COVAR_POP 130 HTML_ENCODE 169

949
Index

HTTP 103 RADIANS 208


HTTP_DECODE 170 RAND 209
HTTP_ENCODE 171 RANK 209
IDENTITY 173 REGR_AVGX 210
IFNULL 173 REGR_AVGY 211
image 109 REGR_COUNT 212
INDEX_ESTIMATE 174 REGR_INTERCEPT 213
INSERTSTR 174 REGR_R2 214
INTTOHEX 175 REGR_SLOPE 215
ISDATE 175 REGR_SXX 216
ISNULL 176 REGR_SXY 217
ISNUMERIC 177 REGR_SYY 217
LCASE 177 REMAINDER 218
LEFT 178 REPEAT 219
LENGTH 178 REPLACE 219
LESSER 179 REPLICATE 220
LIST 179 REWRITE 221
LOCATE 182 RIGHT 223
LOG 183 ROUND 223
LOG10 183 ROW_NUMBER 224
LONG_ULPLAN 184 RTRIM 225
LOWER 184 SECOND 225
LTRIM 185 SECONDS 226
MAX 185 SHORT_ULPLAN 227
MIN 186 SIGN 228
MINUTE 186 SIMILAR 228
MINUTES 187 SIN 229
MOD 188 SORTKEY 229
MONTH 188 SOUNDEX 232
MONTHNAME 189 SPACE 233
MONTHS 189 SQLDIALECT 234
NEXT_CONNECTION 191 SQRT 234
NEXT_DATABASE 193 STR 236
NOW 194 STRING 237
NULLIF 195 STUFF 239
NUMBER 196 SUBSTRING 239
numrique 102 SUM 241
PATINDEX 202 syntaxe CSCONVERT 131
PERCENT_RANK 203 syntaxe de DB_EXTENDED_PROPERTY 142
PI 204 syntaxe de la fonction GROUPING 165
PLAN 204 syntaxe de la fonction HTTP_HEADER 172
POWER 205 syntaxe de la fonction HTTP_VARIABLE 172
PROPERTY 206 syntaxe de la fonction NEWID 190
PROPERTY_DESCRIPTION 206 syntaxe de la fonction NEXT_HTTP_HEADER
PROPERTY_NAME 207 193
PROPERTY_NUMBER 207 syntaxe de la fonction
QUARTER 208 NEXT_HTTP_VARIABLE 194

950
Index

syntaxe de la fonction OPENXML 197 syntaxe ALTER PROCEDURE 288


syntaxe de la fonction STDDEV 234 syntaxe ALTER PUBLICATION 290
syntaxe de la fonction STDDEV_POP 235 syntaxe ALTER REMOTE MESSAGE TYPE 292
syntaxe de la fonction STDDEV_SAMP 235 syntaxe ALTER SERVER 294
syntaxe de la fonction UUIDTOSTR 246 syntaxe ALTER SERVICE 297
syntaxe de la fonction VAR_POP 248 syntaxe ALTER SYNCHRONIZATION
syntaxe de la fonction VAR_SAMP 249 SUBSCRIPTION 301
syntaxe de la fonction VAREXISTS 250 syntaxe ALTER SYNCHRONIZATION USER
syntaxe de la fonction VARIANCE 250 303
syntaxe de la fonction XMLAGG 252 syntaxe ALTER TABLE 305
syntaxe de la fonction XMLCONCAT 253 syntaxe ALTER TRIGGER 313
syntaxe de la fonction XMLELEMENT 254 syntaxe ALTER VIEW 315
syntaxe de la fonction XMLFOREST 255 syntaxe ALTER WRITEFILE 317
syntaxe de la fonction XMLGEN 256 syntaxe BACKUP 319
syntaxe EXPRTYPE 160 syntaxe BEGIN DECLARE 454
syntaxe SQL de la fonction STRTOUUID 238 syntaxe BEGIN et END 324
systme 106 syntaxe BEGIN TRANSACTION 327
TAN 241 syntaxe BREAK (Transact-SQL) 700
texte 109 syntaxe BYE 498
TEXTPTR 242 syntaxe CALL 330
TODAY 242 syntaxe CASE 332
TRACEBACK 243 syntaxe CHECKPOINT 335
TRANSACTSQL 243 syntaxe CLEAR 336
TRIM 243 syntaxe CLOSE 337
TRUNCATE 244 syntaxe COMMENT 339
TRUNCNUM 245 syntaxe COMMIT 341
type 96 syntaxe CONFIGURE 343
UCASE 245 syntaxe CONNECT 344
UPPER 246 syntaxe CONTINUE (Transact-SQL) 700
WATCOMSQL 250 syntaxe CREATE COMPRESSED DATABASE
WEEKS 251 348
YEARS 258 syntaxe CREATE DATABASE 350
YMD 259 syntaxe CREATE DBSPACE 357
SQL, instruction syntaxe CREATE DECRYPTED FILE 359
ALTER DATATYPE, instruction 282 syntaxe CREATE DOMAIN 360
clause FROM 511 syntaxe CREATE ENCRYPTED FILE 362
conventions de la documentation 269 syntaxe CREATE EVENT 364
envoi un serveur distant 509 syntaxe CREATE EXPANDED DATABASE 348
installation de classes Java 555 syntaxe CREATE EXTERNLOGIN 374
liste alphabtique de toutes les instructions 261 syntaxe CREATE FUNCTION 376
syntaxe ALLOCATE DESCRIPTOR 273 syntaxe CREATE INDEX 383
syntaxe ALTER DATABASE 275 syntaxe CREATE MESSAGE (Transact-SQL)388
syntaxe ALTER DBSPACE 280 syntaxe CREATE PROCEDURE 390
syntaxe ALTER DOMAIN 282 syntaxe CREATE PROCEDURE (Transact-SQL)
syntaxe ALTER EVENT 283 400
syntaxe ALTER FUNCTION 285 syntaxe CREATE PUBLICATION 402
syntaxe ALTER INDEX 286 syntaxe CREATE REMOTE MESSAGE TYPE

951
Index

405 syntaxe DROP SYNCHRONIZATION


syntaxe CREATE SCHEMA 407 SUBSCRIPTION 486
syntaxe CREATE SERVER 409 syntaxe DROP SYNCHRONIZATION USER 487
syntaxe CREATE SERVICE 412 syntaxe DROP TABLE 474
syntaxe CREATE STATISTICS 416 syntaxe DROP TRIGGER 474
syntaxe CREATE SUBSCRIPTION 417 syntaxe DROP VARIABLE 488
syntaxe CREATE SYNCHRONIZATION syntaxe DROP VIEW 474
SUBSCRIPTION 419 syntaxe END DECLARE 454
syntaxe CREATE SYNCHRONIZATION USER syntaxe EXCEPT 489
422 syntaxe EXECUTE 491
syntaxe CREATE TABLE 425 syntaxe EXECUTE (Transact-SQL) 493
syntaxe CREATE TRIGGER 438, 443 syntaxe EXECUTE IMMEDIATE 495
syntaxe CREATE TRIGGER (Transact-SQL) 446 syntaxe EXIT 498
syntaxe CREATE VARIABLE 447 syntaxe EXPLAIN 500
syntaxe CREATE VIEW 448 syntaxe FETCH 502
syntaxe CREATE WRITEFILE 450 syntaxe FOR 507
syntaxe DEALLOCATE 452 syntaxe FORWARD TO 509
syntaxe DEALLOCATE DESCRIPTOR 453 syntaxe GET DATA 518
syntaxe DECLARE 455 syntaxe GET DESCRIPTOR 520
syntaxe DECLARE CURSOR 456 syntaxe GET OPTION 522
syntaxe DECLARE CURSOR (Transact-SQL) syntaxe GOTO (Transact-SQL) 523
461 syntaxe GRANT 524
syntaxe DECLARE LOCAL TEMPORARY syntaxe GRANT CONSOLIDATE 529
TABLE 463 syntaxe GRANT PUBLISH 531
syntaxe DELETE 465 syntaxe GRANT REMOTE 532
syntaxe DELETE (positionne) 467 syntaxe GRANT REMOTE DBA 534
syntaxe DESCRIBE 469 syntaxe HELP 539
syntaxe DISCONNECT 473 syntaxe IF 540
syntaxe DROP 474 syntaxe IF (Transact-SQL) 542
syntaxe DROP CONNECTION 477 syntaxe INCLUDE 544
syntaxe DROP DATABASE 476 syntaxe INPUT 545
syntaxe DROP DATATYPE 474 syntaxe INSERT 551
syntaxe DROP DBSPACE 474 syntaxe INSTALL JAVA 555
syntaxe DROP DOMAIN 474 syntaxe INTERSECT 558
syntaxe DROP EVENT 474 syntaxe LEAVE 560
syntaxe DROP EXTERNLOGIN 478 syntaxe LOAD STATISTICS 562
syntaxe DROP FUNCTION 474 syntaxe LOAD TABLE 563
syntaxe DROP INDEX 474 syntaxe LOCK TABLE 572
syntaxe DROP MESSAGE 474 syntaxe LOOP 574
syntaxe DROP PROCEDURE 474 syntaxe MESSAGE 575
syntaxe DROP PUBLICATION 479 syntaxe OPEN 579
syntaxe DROP REMOTE MESSAGE TYPE 480 syntaxe OUTPUT 582
syntaxe DROP SERVER 481 syntaxe PARAMETERS 587
syntaxe DROP SERVICE 482 syntaxe PASSTHROUGH 588
syntaxe DROP STATEMENT 483 syntaxe PREPARE 589
syntaxe DROP STATISTICS 484 syntaxe PREPARE TO COMMIT 592
syntaxe DROP SUBSCRIPTION 485 syntaxe PRINT (Transact-SQL) 593

952
Index

syntaxe PUT 594 syntaxe SYNCHRONIZE SUBSCRIPTION 671


syntaxe QUIT 498 syntaxe SYSTEM 672
syntaxe RAISERROR (Transact-SQL) 596 syntaxe Transact-SQL SET 637
syntaxe READ 598 syntaxe Transact-SQL SET OPTION 637
syntaxe READTEXT (Transact-SQL) 600 syntaxe TRIGGER EVENT 673
syntaxe RELEASE SAVEPOINT 601 syntaxe TRUNCATE TABLE 674
syntaxe REMOTE JAVA 603 syntaxe UNION 676
syntaxe REMOTE RESET 602 syntaxe UNLOAD 678
syntaxe REORGANIZE TABLE 604 syntaxe UNLOAD TABLE 680
syntaxe RESIGNAL 607 syntaxe UPDATE 683, 690
syntaxe RESTORE DATABASE 608 syntaxe UPDATE (positionne) 688
syntaxe RESUME 610 syntaxe VALIDATE INDEX 694
syntaxe RETURN 611 syntaxe VALIDATE TABLE 695
syntaxe REVOKE 613 syntaxe WAITFOR 697
syntaxe REVOKE CONSOLIDATE 616 syntaxe WHENEVER 699
syntaxe REVOKE PUBLISH 617 syntaxe WHILE 574
syntaxe REVOKE REMOTE 619 syntaxe WHILE (Transact-SQL) 700
syntaxe REVOKE REMOTE DBA 620 syntaxe WRITETEXT 701
syntaxe ROLLBACK 621 VALIDATE CHECKSUM 693
syntaxe ROLLBACK TO SAVEPOINT 622 SQL, syntaxe
syntaxe ROLLBACK TRANSACTION 623 conventions de la documentation 269
syntaxe ROLLBACK TRIGGER 624 mot-cl 4
syntaxe SAVE TRANSACTION 625 SQL, variable
syntaxe SAVEPOINT 626 cration 447
syntaxe SELECT 627 dclaration 455
syntaxe SET 635 dfinition des valeurs 635
syntaxe SET CONNECTION 641 suppression 488
syntaxe SET DESCRIPTOR 642 SQL ; instruction
syntaxe SET OPTION 644, 647 syntaxe CREATE EXISTING TABLE 371
syntaxe SET REMOTE OPTION 648 SQLCA
syntaxe SET SQLCA 650 dfinition 650
syntaxe SETUSER 652 instruction INCLUDE 544
syntaxe SIGNAL 654 SQLCODE
syntaxe START DATABASE 655 valeur spciale 37
syntaxe START ENGINE 657 SQLDA
syntaxe START JAVA 658 allocation de mmoire 273
syntaxe START LOGGING 659 dfinition 642
syntaxe START SUBSCRIPTION 660 extraction dinformations 520
syntaxe START SYNCHRONIZATION DELETE insertion de lignes via un curseur 594
662 instruction INCLUDE 544
syntaxe STOP DATABASE 664 instruction SQL DESCRIBE 469
syntaxe STOP ENGINE 665 instruction SQL EXECUTE 491
syntaxe STOP JAVA 666 instruction UPDATE (positionne) 688
syntaxe STOP LOGGING 667 libration 453
syntaxe STOP SUBSCRIPTION 668 SQLDIALECT, fonction
syntaxe STOP SYNCHRONIZATION DELETE syntaxe SQL 234
669 SQLSTATE

953
Index

valeur spciale 38 STOP SUBSCRIPTION, instruction


SQRT, fonction syntaxe SQL 668
syntaxe SQL 234 STOP SYNCHRONIZATION DELETE, instruction
START AT, clause syntaxe SQL 669
instruction SELECT 627 STR, fonction
START DATABASE, instruction syntaxe SQL 236
syntaxe SQL 655 STRING, fonction
START ENGINE, instruction syntaxe SQL 237
syntaxe Interactive SQL 657 STRING_RTRUNCATION, option
START JAVA, instruction compatibilit ASE 637
syntaxe SQL 658 STRIP, option
START LOGGING, instruction instruction LOAD TABLE 567
syntaxe Interactive SQL 659 STRTOUUID, fonction
START SUBSCRIPTION, instruction syntaxe SQL 238
syntaxe SQL 660 STUFF, fonction
START SYNCHRONIZATION DELETE, syntaxe SQL 239
instruction su
syntaxe SQL 662 dfinition dutilisateurs 652
statistique SUBSCRIBE BY, clause
chargement 562 instruction CREATE PUBLICATION 402
instruction CREATE STATISTICS 416 SUBSTR, fonction
mise jour avec LOAD TABLE 569 syntaxe SQL 239
table systme SYSCOLSTAT 723 SUBSTRING, fonction
statistique de colonne syntaxe SQL 239
estimation de slectivit 32 SUM, fonction
mise jour avec CREATE STATISTICS 416 syntaxe SQL 241
mise jour avec LOAD TABLE 569 supertype 83
table systme SYSCOLSTAT 723 support technique
vue systme SYSCOLSTATS 799 forum xix
statistique, optimiseur suppression
suppression 484 autorisation 613
statistiques classe Java 603
vidage 834 connexion 477
STDDEV, fonction connexion dans Interactive SQL 473
syntaxe SQL 234 dbspace 474
STDDEV_POP, fonction domaine 474
syntaxe SQL 235 vnement 474
STDDEV_SAMP, fonction fichier de base de donnes 476
syntaxe SQL 235 fonction 474
STOP DATABASE, instruction index 474
syntaxe SQL 664 instruction DROP PUBLICATION 479
STOP ENGINE, instruction instruction DROP SUBSCRIPTION 485
syntaxe SQL 665 instruction DROP SYNCHRONIZATION
STOP JAVA, instruction SUBSCRIPTION 486
syntaxe SQL 666 instruction DROP SYNCHRONIZATION USER
STOP LOGGING, instruction 487
syntaxe Interactive SQL 667 instruction prpare 483

954
Index

instruction START SYNCHRONIZATION mot rserv SQL 4


DELETE 662 mot-cl SQL 4
instruction STOP SYNCHRONIZATION nom de colonne 18
DELETE 669 oprateur arithmtique 14
ligne de la base de donnes 465 oprateur binaire 15
login pour les serveurs distants 478 oprateur de comparaison 12
octroi dautorisations 524, 613 oprateur de type chane 14
procdure 474 oprateur logique 13
serveur distant 481 oprateur SQL 12
services Web 482 prdicat 24
statistique de loptimiseur 484 priorit des oprateurs SQL 16
table 474 sous-requte dans des conditions de recherche
toutes les lignes dune table 674 SQL 25
trigger 474 sous-requte SQL 19
type de message distant 480 valeur NULL 52
utilisateur 613 valeur spciale 35
variable SQL 488 valeur spciale CURRENT DATABASE 35
vue 474 valeur spciale CURRENT DATE 35
suppression, ligne valeur spciale CURRENT PUBLISHER 35
curseur 467 valeur spciale CURRENT TIME 35
suser_id, fonction Adaptive Server Enterprise 106 valeur spciale CURRENT TIMESTAMP 36
suser_name, fonction Adaptive Server Enterprise106 valeur spciale CURRENT USER 36
SYNCHRONIZE SUBSCRIPTION, instruction valeur spciale CURRENT UTC TIMESTAMP36
syntaxe SQL 671 valeur spciale CURRENT_TIMESTAMP 36
syntaxe valeur spciale CURRENT_USER 36
chane 10 valeur spciale LAST USER 37
commentaire 51 valeur spciale SQLCODE 37
compatibilit des expressions Transact-SQL 21 valeur spciale SQLSTATE 38
condition ALL 25 valeur spciale TIMESTAMP 38
condition ANY 25 valeur spciale USER 39
condition BETWEEN 26 valeur spciale UTC TIMESTAMP 39
condition de recherche 24 variable de niveau connexion 42
condition EXISTS 30 variable globale 42
condition IN 29 variable locale 40
condition IS NULL 30 variable SQL 40
condition IS TRUE ou FALSE 30 syntaxe dinstruction
condition LIKE 26 liste alphabtique de toutes les instructions 261
condition SOME 25 syntaxe des instructions
constante 18 conventions de la documentation 269
conventions de la documentation 269 syntaxe SQL
expression CASE 20 chane 10
expression IF 19 commentaire 51
expression SQL 17 compatibilit des expressions Transact-SQL 21
fonction SQL 96 condition ALL 25
identificateur SQL 8 condition ANY 25
instruction SQL 261 condition BETWEEN 26
logique ternaire 31 condition de recherche 24

955
Index

condition EXISTS 30 SYS


condition IN 29 table systme 705
condition IS NULL 30 SYS, groupe
condition IS TRUE ou FALSE 30 table systme 789
condition LIKE 26 SYSARTICLE, table systme
condition SOME 25 gnralits 710
constante 18 SYSARTICLECOL, table systme
expression 17 gnralits 711
expression CASE 20 SYSARTICLECOLS, vue systme
expression IF 19 gnralits 798
fonction 96 SYSARTICLES, vue systme
identificateur 8 gnralits 798
liste alphabtique de toutes les instructions 261 SYSATTRIBUTE, table systme
logique ternaire 31 gnralits 712
mot rserv 4 SYSATTRIBUTENAME, table systme
nom de colonne 18 gnralits 715
oprateur 12 SYSCAPABILITIES, vue systme
oprateur arithmtique 14 gnralits 799
oprateur binaire 15 SYSCAPABILITY, table systme
oprateur de comparaison 12 gnralits 716
oprateur de type chane 14 SYSCAPABILITYNAME, table systme
oprateur logique 13 gnralits 717
prdicat 24 SYSCATALOG, vue systme
priorit des oprateurs 16 gnralits 799
sous-requte 19 SYSCHECK, table systme
sous-requte dans des conditions de recherche 25 gnralits 718
valeur NULL 52 SYSCOLAUTH, vue systme
valeur spciale 35 gnralits 799
valeur spciale CURRENT DATABASE 35 SYSCOLLATION, table systme
valeur spciale CURRENT DATE 35 gnralits 719
valeur spciale CURRENT PUBLISHER 35 SYSCOLLATIONMAPPINGS, table systme
valeur spciale CURRENT TIME 35 gnralits 720
valeur spciale CURRENT TIMESTAMP 36 SYSCOLPERM, table systme
valeur spciale CURRENT USER 36 gnralits 721
valeur spciale CURRENT UTC TIMESTAMP36 SYSCOLSTAT, table systme
valeur spciale CURRENT_TIMESTAMP 36 chargement des statistiques 562
valeur spciale CURRENT_USER 36 gnralits 723
valeur spciale LAST USER 37 SYSCOLSTATS, vue systme
valeur spciale SQLCODE 37 gnralits 799
valeur spciale SQLSTATE 38 SYSCOLUMN, table systme
valeur spciale TIMESTAMP 38 gnralits 725
valeur spciale USER 39 SYSCOLUMNS, vue systme
valeur spciale UTC TIMESTAMP 39 gnralits 800
variable 40 SYSCONSTRAINT, table systme
variable de niveau connexion 42 gnralits 727
variable globale 42 SYSDOMAIN, table systme
variable locale 40 gnralits 729

956
Index

SYSEVENT, table systme gnralits 755


gnralits 730 SYSOPTORDERS, vue systme
SYSEVENTTYPE, table systme gnralits 801
gnralits 732 SYSOPTPLANS, vue systme
SYSEXTENT, table systme gnralits 801
gnralits 733 SYSOPTQUANTIFIER, table systme
SYSEXTERNLOGINS, table systme gnralits 756
gnralits 734 SYSOPTREQUEST, table systme
SYSFILE, table systme gnralits 757
gnralits 735 SYSOPTREWRITE, table systme
SYSFKCOL, table systme gnralits 758
gnralits 736 SYSOPTSTAT, table systme
SYSFOREIGNKEY, table systme gnralits 759
gnralits 737 SYSOPTSTRATEGIES, vue systme
SYSFOREIGNKEYS, vue systme gnralits 801
gnralits 800 SYSPROCAUTH, vue systme
SYSGROUP, table systme gnralits 801
gnralits 739 SYSPROCEDURE, table systme
SYSGROUPS, vue systme gnralits 760
gnralits 800 SYSPROCPARM, table systme
SYSHISTORY, table systme gnralits 762
gnralits 740 SYSPROCPARMS, vue systme
SYSINDEX, table systme gnralits 801
gnralits 742 SYSPROCPERM, table systme
SYSINDEXES, vue systme gnralits 764
gnralits 800 SYSPUBLICATION, table systme
SYSINFO, table systme gnralits 765
gnralits 744 SYSPUBLICATIONS, vue systme
SYSIXCOL, table systme gnralits 802
gnralits 746 SYSREMOTEOPTION, table systme
SYSJAR, table systme gnralits 766
gnralits 747 SYSREMOTEOPTION2, vue systme
SYSJARCOMPONENT, table systme gnralits 802
gnralits 748 SYSREMOTEOPTIONS, vue systme
SYSJAVACLASS, table systme gnralits 803
gnralits 749 SYSREMOTEOPTIONTYPE, table systme
SYSLOGIN, table systme gnralits 767
gnralits 751 SYSREMOTETYPE, table systme
SYSOPTBLOCK, table systme gnralits 768
gnralits 752 SYSREMOTETYPES, vue systme
SYSOPTION, table systme gnralits 803
gnralits 753 SYSREMOTEUSER, table systme
SYSOPTIONS, vue systme gnralits 769
gnralits 800 SYSREMOTEUSERS, vue systme
SYSOPTJOINSTRATEGY, table systme gnralits 803
gnralits 754 SYSSCHEDULE, table systme
SYSOPTORDER, table systme gnralits 771

957
Index

SYSSERVERS, table systme gnralits 787


ajout de serveurs 409 SYSUSEROPTIONS, vue systme
gnralits 773 gnralits 807
services dintgration de composants, serveur SYSUSERPERM, table systme
distant 410, 423 gnralits 788
SYSSQLSERVERTYPE, table systme SYSUSERPERMS, vue systme
gnralits 774 gnralits 807
SYSSUBSCRIPTION, table systme SYSUSERTYPE, table systme
gnralits 775 gnralits 790
SYSSUBSCRIPTIONS, vue systme SYSVIEWS, vue systme
gnralits 804 gnralits 808
SYSSYNC, table systme SYSWEBSERVICE, table systme
gnralits 776 ajout de serveurs 297
SYSSYNC2, vue systme ajout de services 412
about 804 gnralits 792
SYSSYNCDEFINITIONS, vue systme modification des services 297
gnralits 804 suppression des services 482
SYSSYNCPUBLICATIONDEFAULTS, vue
systme T
gnralits 804
table
SYSSYNCS, vue systme
changement de nom 310
gnralits 805
chargement en mode bulk 563
SYSSYNCSUBSCRIPTIONS, vue systme
cration 425
gnralits 805
dchargement avec linstruction UNLOAD
SYSSYNCUSERS, vue systme
TABLE 680
gnralits 805
limination 474
SYSTABAUTH, vue systme
exportation de donnes dans des fichiers 582
gnralits 806
importation de donnes partir de fichiers 545
SYSTABLE, table systme
insertion de lignes 551
gnralits 778
locale temporaire, cration 463
SYSTABLEPERM, table systme
mise jour 690
gnralits 781
modification 305
SYSTEM, instruction
proxy, cration 371
syntaxe Interactive SQL 672
rorganisation 604
systme dexploitation
rplication 305
excution de commandes 672
troncature 674
SYSTRIGGER, table systme
validation 695
gnralits 783
verrouillage 572
SYSTRIGGERS, vue systme
table distante
gnralits 806
affichage 891
SYSTYPEMAP, table systme
cl trangre 886, 888
gnralits 786
cl primaire 886, 888
SYSUSERAUTH, vue systme
colonne 884
gnralits 806
cration 426
SYSUSERLIST, vue systme
table trangre
gnralits 807
table systme 737
SYSUSERMESSAGES, table systme
table primaire

958
Index

table systme 737 SYSOPTBLOCK 752


table Proxy SYSOPTION 753
cration 371, 426 SYSOPTJOINSTRATEGY 754
table remoteoptiontype SYSOPTORDER 755
gnralits 767 SYSOPTQUANTIFIER 756
table sous-jacente SYSOPTREQUEST 757
clause FROM 511 SYSOPTREWRITE 758
cration 435 SYSOPTSTAT 759
latrale 513 SYSPROCEDURE 760
table sous-jacente latrale SYSPROCPARM 762
rfrence externe de la clause FROM 513 SYSPROCPERM 764
table spciale SYSPUBLICATION 765
gnralits 705 SYSREMOTETYPE 768
table systme SYSREMOTEUSER 769
DUMMY 708 SYSSCHEDULE 771
gnralits 705 SYSSERVERS 773
RowGenerator 709 SYSSQLSERVERTYPE 774
SYSARTICLE 710 SYSSUBSCRIPTION 775
SYSARTICLECOL 711 SYSSYNC 776
SYSATTRIBUTE 712 SYSTABLE 778
SYSATTRIBUTENAME 715 SYSTABLEPERM 781
SYSCAPABILITY 716 SYSTRIGGER 783
SYSCAPABILITYNAME 717 SYSTYPEMAP 786
SYSCHECK 718 SYSUSERMESSAGES 787
SYSCOLLATION 719 SYSUSERPERM 788
SYSCOLLATIONMAPPINGS 720 SYSUSERTYPE 790
SYSCOLPERM 721 SYSWEBSERVICE 792
SYSCOLSTAT 723 Transact-SQL 809
SYSCOLUMN 725 vue systme 797
SYSCONSTRAINT 727 table temporaire
SYSDOMAIN 729 cration 425, 435
SYSEVENT 730 dclaration dune table locale 463
SYSEVENTTYPE 732 Transact-SQL 435
SYSEXTENT 733 vue non autorise sur locale 448
SYSEXTERNLOGINS 734 table temporaire globale
SYSFILE 735 cration 425
SYSFKCOL 736 table temporaire locale
SYSFOREIGNKEY 737 cration 463
SYSGROUP 739 table, contrainte 431
SYSHISTORY 740 tables systme
SYSINDEX 742 Java 794
SYSINFO 744 taille de fichier
SYSIXCOL 746 cration dvnement 364
SYSJAR 747 taille de page
SYSJARCOMPONENT 748 cration de bases de donnes 351
SYSJAVACLASS 749 TAN, fonction
SYSLOGIN 751 syntaxe SQL 241

959
Index

TempFreePercent, condition dvnement transactions, journal


gnralits 153 allocation despace 280
TempFreeSpace, condition dvnement Transact-SQL
gnralits 153 catalogue systme 809
temps universel coordonn chane 22
CURRENT UTC TIMESTAMP 36 compatibilit date/heure 71
UTC TIMESTAMP 39 compatibilit de type de donnes bit 70
TempSize, condition dvnement compatibilit des expressions SQL 21
gnralits 153 compatibilit heure 71
TEXT, type de donnes constante 22
gnralits 59 conversion de procdures stockes 250
texte domaine 82
lecture partir de la base de donnes 600 quivalence ANSI 221
texte, fonction 109 fonction systme 106
TEXTPTR, fonction instruction BREAK 700
syntaxe SQL 242 instruction CONTINUE 700
TEXTSIZE, option instruction CREATE FUNCTION 381
compatibilit ASE 637 instruction CREATE MESSAGE 388
THEN instruction CREATE PROCEDURE 400
expression IF 19 instruction CREATE SCHEMA 407
TIME, type de donnes 71 instruction CREATE TABLE 435
gnralits 77 instruction CREATE TRIGGER 446
TIMESTAMP instruction DECLARE CURSOR 461
TIMESTAMP, colonne 430 instruction EXECUTE 493
valeur spciale 38 instruction GOTO 523
TIMESTAMP, type de donnes instruction IF 542
envoi de dates et dheures 71 instruction PRINT 593
gnralits 77 instruction RAISERROR 596
TINYINT, type de donnes instruction READTEXT 600
gnralits 67 instruction SET 637
tiret double instruction SET OPTION 637
indicateur de commentaires 51 instruction WHILE 700
TODAY, fonction instruction WRITETEXT 701
syntaxe SQL 242 liste alphabtique de toutes les instructions 261
TOP, clause oprateur binaire 15
instruction SELECT 627 oprateur de comparaison 12
TRACEBACK, fonction oprateur de jointure externe 16
syntaxe SQL 243 option QUOTED_IDENTIFIER 22
transaction procdure catalogue 908
annulation 621, 623, 625 procdure systme 906
annulation jusqu un point de sauvegarde 622 section DECLARE 325
cration de point de sauvegarde 626 type de donnes dfini par lutilisateur 82
dfinie par lutilisateur, imbrication 327 type de donnes montaire 69
dfinie par lutilisateur, lancement 327 variable globale 42
validation 341 variable locale 40, 41
TRANSACTION ISOLATION LEVEL, option TRANSACTSQL, fonction
compatibilit ASE 637 syntaxe SQL 243

960
Index

Transact-SQL, liste compatibilit 71


procdure catalogue (ASE) 908 conversion Java en SQL 86
tri conversion Java et SQL 86
fonction SORTKEY 229 conversion pour les oprateurs de comparaison 83
table systme 719 conversion SQL en Java 86, 87
trigger cration 360
annulation 624 DATE 75
cration 438 date 71
cration dans Transact-SQL 446 DATETIME 76
instruction CREATE TRIGGER [SQL Remote] DECIMAL 62
443 dfini par lutilisateur 81, 790
instruction TRUNCATE TABLE 675 dfini par lutilisateur (Transact-SQL) 82
modification 313 domaine 81
niveau instruction 440 DOUBLE 63
niveau ligne 440 erreur darrondi 61
suppression 474 extraction 160
Watcom-SQL 443 FLOAT 63
TRIGGER EVENT, instruction fonction de conversion SQL 97
syntaxe SQL 673 gnralits 55
trigger, condition heure 71
distinction des actions de trigger 31 IMAGE 78
TRIM, fonction INT 65
syntaxe SQL 243 INTEGER 65
troncature LONG BINARY 78
table 674 LONG VARCHAR 58
TRUE modification 282
logique ternaire 31 MONEY 69
TRUE, condition NUMERIC 65
IS TRUE 30 REAL 66
TRUNCATE TABLE, instruction SMALLDATETIME 76
syntaxe SQL 674 SMALLINT 66
TRUNCATE, fonction SMALLMONEY 69
syntaxe SQL 244 table systme 729, 734, 790
TRUNCNUM, fonction TEXT 59
syntaxe SQL 245 TIME 77
tsequal, fonction Adaptive Server Enterprise 106 TIMESTAMP 77
TSQL TINYINT 67
indicateur dinstruction 271 UNIQUEIDENTIFIER 79
type de donnes UNIQUEIDENTIFIERSTR 59
arrondi 61 VARBINARY 80
BIGINT 62 VARCHAR 58
binaire 78 XML 59
BINARY 78 type de donnes binaire
BIT 70 gnralits 78
caractre 56 IMAGE 78
CHAR 57 LONG BINARY 78
CHARACTER VARYING 58 UNIQUEIDENTIFIER 79

961
Index

VARBINARY 80 syntaxe SQL 246


type de donnes dfini par lutilisateur used_pgs, fonction Adaptive Server Enterprise 106
cration 360 USER
type de donnes, conversion valeur spciale 39
gnralits 83 user_id, fonction Adaptive Server Enterprise 106
type de donnes, suppression user_name, fonction Adaptive Server Enterprise 106
dfini par lutilisateur 474 UTC TIMESTAMP
type de message distant valeur spciale 39
cration 405 utilisateur
modification 292 dfinition 652
suppression 480 instruction DROP SYNCHRONIZATION USER
TYPE, clause 487
CREATE SYNCHRONIZATION USER 422 suppression 613
syntaxe ALTER SYNCHRONIZATION USER
U 303
syntaxe CREATE SYNCHRONIZATION USER
UCASE, fonction
422
syntaxe SQL 245
utilisateur distant
union
instruction REVOKE REMOTE 619
instructions SELECT multiples 676
utilisateur Mobilink
UNION, opration
instruction DROP SYNCHRONIZATION USER
syntaxe SQL 676
487
UNIQUEIDENTIFIER, type de donnes
syntaxe ALTER SYNCHRONIZATION USER
gnralits 79
303
UNIQUEIDENTIFIERSTR, type de donnes
syntaxe CREATE SYNCHRONIZATION USER
gnralits 59
422
Universally Unique Identifier (UUID)
utilisation des pages
syntaxe SQL pour la fonction NEWID 190
table 881
UNKNOWN, condition
utilisation en boucle
IS UNKNOWN 30
curseur 507
UNLOAD TABLE, instruction
UUID
syntaxe SQL 680
syntaxe SQL pour la fonction NEWID 190
UNLOAD, instruction
syntaxe SQL pour la fonction STRTOUUID 238
syntaxe SQL 678
syntaxe SQL pour la fonction UUIDTOSTR 246
UPDATE (positionne), instruction
type de donnes UNIQUEIDENTIFIER 79
syntaxe SQL 688
UUIDTOSTR, fonction
UPDATE, autorisation
syntaxe SQL 246
instruction GRANT 524
UPDATE, clause
V
CREATE TRIGGER [Transact-SQL] 446
instruction CREATE TRIGGER 438, 446 valeur
instruction CREATE TRIGGER [SQL Remote] renvoi partir dune procdure 611
443 valeur par dfaut
UPDATE, instruction auto-incrmentation 427
syntaxe SQL 683, 690 CURRENT DATABASE 35
UPDATING, condition CURRENT DATE 35
trigger 31 CURRENT PUBLISHER 35
UPPER, fonction CURRENT TIME 35

962
Index

CURRENT TIMESTAMP 36 syntaxe 269


CURRENT USER 36 VAR_POP, fonction
CURRENT UTC TIMESTAMP 36 syntaxe SQL 248
CURRENT_TIMESTAMP 36 VAR_SAMP, fonction
CURRENT_USER 36 syntaxe SQL 249
LAST USER 37 VARBINARY, type de donnes
SQLCODE 37 gnralits 80
SQLSTATE 38 VARCHAR, type de donnes
TIMESTAMP 38 syntaxe 58
USER 39 VAREXISTS, fonction
UTC TIMESTAMP 39 syntaxe SQL 250
valeur spciale variable
CURRENT DATABASE 35 dfinition des valeurs 635
CURRENT DATE 35 extraction dune zone descripteur 520
CURRENT PUBLISHER 35 globale 42
CURRENT TIME 35 locale 40
CURRENT TIMESTAMP 36 syntaxe SQL 40
CURRENT USER 36 variable de liaison
CURRENT UTC TIMESTAMP 36 description de curseurs 469
CURRENT_TIMESTAMP 36 instruction OPEN 579
CURRENT_USER 36 instruction SQL EXECUTE 491
LAST USER 37 variable de niveau connexion
NULL 52 dfinition 40
SQLCODE 37 syntaxe SQL 42
SQLSTATE 38 variable dpendante
syntaxe SQL 35 droite de rgression 211
TIMESTAMP 38 variable globale
USER 39 dfinition 40
UTC TIMESTAMP 39 syntaxe SQL 42
valid_name, fonction Adaptive Server Enterprise106 variable hte
valid_user, fonction Adaptive Server Enterprise 106 dclaration dans Embedded SQL 454
VALIDATE CHECKSUM, instruction syntaxe 269
syntaxe SQL 693 variable indpendante
VALIDATE INDEX, instruction droite de rgression 210
syntaxe SQL 694 variable indicateur
VALIDATE TABLE, instruction gnralits 269
syntaxe SQL 695 variable locale
validation dfinition 40
base de donnes 882 syntaxe SQL 40
index 694 variable SQL
table 695 cration 447
transaction 341 dclaration 455
validation de base de donnes suppression 488
instruction VALIDATE CHECKSUM 693 variable, jeu de rsultats
instruction VALIDATE INDEX 694 procdure 391, 471, 589
instruction VALIDATE TABLE 695 variance dchantillon 249
var_hte variance de remplissage 248

963
Index

VARIANCE, fonction SYSSYNC2 804


syntaxe SQL 250 SYSSYNCDEFINITIONS 804
vrification SYSSYNCPUBLICATIONDEFAULTS 804
mot de passe 883 SYSSYNCS 805
verrou SYSSYNCSUBSCRIPTIONS 805
affichage 846 SYSSYNCUSERS 805
verrouillage SYSTABAUTH 806
blocs 820 SYSTRIGGERS 806
table 572 SYSUSERAUTH 806
VIM, type de message SYSUSERLIST 807
gnralits 292, 405, 480 SYSUSEROPTIONS 807
volumineux, objet binaire SYSUSERPERMS 807
extraction partir de colonnes 518 SYSVIEWS 808
vue
cration 448 W
index 385
WAITFOR, instruction
modifiable 552
syntaxe SQL 697
modification 315
Watcom-SQL
procdure systme sa_recompile_views 867
instruction DECLARE 455
suppression 474
WATCOMSQL, fonction
vue systme 808
syntaxe SQL 250
vue systme
Watcom-SQL, instruction
dfinition 798
Transact-SQL, rcriture 243
gnralits 797
Web, serveur
Sybase Central 798
cration 412
SYSARTICLECOLS 798
suppression 482
SYSARTICLES 798
WEEKS, fonction
SYSCAPABILITIES 799
syntaxe SQL 251
SYSCATALOG 799
WHEN
SYSCOLAUTH 799
expression CASE 20
SYSCOLSTATS 799
WHENEVER, instruction
SYSCOLUMNS 800
syntaxe Embedded SQL 699
SYSFOREIGNKEYS 800
WHERE, clause
SYSGROUPS 800
condition de recherche 24
SYSINDEXES 800
instruction SELECT 631
SYSOPTIONS 800
WHILE, instruction
SYSOPTORDERS 801
syntaxe SQL 574
SYSOPTPLANS 801
syntaxe Transact-SQL 700
SYSOPTSTRATEGIES 801
WITH CHECKPOINT, option
SYSPROCAUTH 801
instruction LOAD TABLE 567
SYSPROCPARMS 801
WITH HOLD, clause
SYSPUBLICATIONS 802
instruction SQL OPEN 579
SYSREMOTEOPTION2 802
WITH RECURSIVE, clause
SYSREMOTEOPTIONS 803
instruction SELECT 627
SYSREMOTETYPES 803
WITH, clause
SYSREMOTEUSERS 803
instruction SELECT 627
SYSSUBSCRIPTIONS 804
WRITETEXT, instruction

964
Index

syntaxe Transact-SQL 701 Y


X Y2K 89
YEARS, fonction
XML syntaxe SQL 258
fonction OPENXML 197 YMD, fonction
fonction XMLAGG 252 syntaxe SQL 259
fonction XMLCONCAT 253
fonction XMLELEMENT 254 Z
fonction XMLFOREST 255
zone descripteur
fonction XMLGEN 256
allocation de mmoire 273
type de donnes 59
dfinition 642
XML, type de donnes
extraction dinformations 520
gnralits 59
instruction SQL EXECUTE 491
XMLAGG, fonction
instruction UPDATE (positionne) 688
syntaxe SQL 252
libration 453
XMLCONCAT, fonction
zone descripteur SQL
syntaxe SQL 253
insertion de lignes via un curseur 594
XMLELEMENT, fonction
instruction DESCRIBE 469
syntaxe SQL 254
instruction INCLUDE 544
XMLFOREST, fonction
syntaxe SQL 255
XMLGEN, fonction
syntaxe SQL 256
xp_cmdshell, procdure systme
syntaxe 901
xp_msver, procdure systme
syntaxe 901
xp_read_file, procdure systme
syntaxe 902
xp_scanf, procdure systme
syntaxe 903
xp_sendmail, procdure systme
syntaxe 897
xp_sprintf, procdure systme
syntaxe 903
xp_startmail, procdure systme
syntaxe 896
xp_startsmtp, procdure systme
syntaxe 896
xp_stopmail, procdure systme
syntaxe 898
xp_stopsmtp, procdure systme
syntaxe 898
xp_write_file, procdure systme
syntaxe 904

965

Das könnte Ihnen auch gefallen