Beruflich Dokumente
Kultur Dokumente
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
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
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
Index 911
x
Prface
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.
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.
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 :
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 ]
xvi
Icnes Les icnes suivantes sont utilises dans cette documentation :
Application cliente
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
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
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
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
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"
4
Chapitre 1. Elments de langage SQL
identified if in index
into iq is isolation
5
Mot rserv Mot rserv Mot rserv Mot rserv
6
Chapitre 1. Elments de langage SQL
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
8
Chapitre 1. Elments de langage SQL
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
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
Oprateur Description
= Egal
> Suprieur
< Infrieur
!= Diffrent de
<> Diffrent de
12
Chapitre 1. Elments de langage SQL
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 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
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.
14
Chapitre 1. Elments de langage SQL
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
| 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.
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 :
{ + | - | * | / | || | % }
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.
18
Chapitre 1. Elments de langage SQL
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.
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
20
Chapitre 1. Elments de langage SQL
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.
Expression Support
21
Expression Support
Constante Support
Option quoted_identifier
22
Chapitre 1. Elments de langage SQL
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 ) ;
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 )
24
Chapitre 1. Elments de langage SQL
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 )
Condition BETWEEN
La syntaxe de la condition BETWEEN est la suivante :
expr [ NOT ] BETWEEN dbut_expr AND 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]
26
Chapitre 1. Elments de langage SQL
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
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
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
28
Chapitre 1. Elments de langage SQL
seulement au caractre [
Voici dautres cas particuliers :
Lexpression [a-] correspond au caractre a ou -.
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 )
Condition IS NULL
La syntaxe de la condition IS NULL est la suivante :
expression IS [ NOT ] NULL
30
Chapitre 1. Elments de langage SQL
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
32
Chapitre 1. Elments de langage SQL
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].
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
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.
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
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]
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
38
Chapitre 1. Elments de langage SQL
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 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
40
Chapitre 1. Elments de langage SQL
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;
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
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.
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
44
Chapitre 1. Elments de langage SQL
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.
45
Variable globale Valeur renvoye
46
Chapitre 1. Elments de langage SQL
47
Variable globale Valeur renvoye
48
Chapitre 1. Elments de langage SQL
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
51
Valeur NULL
Fonction Spcifie une valeur inconnue ou inapplicable.
Syntaxe NULL
Situation Description
52
Chapitre 1. Elments de langage SQL
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 )
54
CHAPITRE 2
Prsentation Ce chapitre dcrit les types de donnes pris en charge par Adaptive Server
Anywhere.
Sommaire Sujet : page
Domaines 81
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.
57
Voir aussi Type de donnes CHARACTER VARYING (VARCHAR) [Caractre]
la page 58
Type de donnes LONG VARCHAR [Caractre] la page 58
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
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
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].
60
Chapitre 2. Types de donnes SQL
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 .
61
Type de donnes BIGINT [Numrique]
Fonction Entier stock sur 8 octets.
Syntaxe [ UNSIGNED ] BIGINT
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 )
62
Chapitre 2. Types de donnes SQL
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 :
64
Chapitre 2. Types de donnes SQL
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
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 )
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
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.
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
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
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
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.
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
72
Chapitre 2. Types de donnes SQL
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 ;
74
Chapitre 2. Types de donnes SQL
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
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.
76
Chapitre 2. Types de donnes SQL
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
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.
77
Types de donnes binaires
Fonction Stocker des donnes binaires, y compris des images et dautres informations
non interprtes par la base de donnes.
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.
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
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 )
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.
82
Chapitre 2. Types de donnes SQL
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.
84
Chapitre 2. Types de donnes SQL
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 :
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
void this1
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[ ]
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.
89
Type de donnes Contenu Taille des va- Intervalle de
riables valeurs
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)
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);
92
Chapitre 2. Types de donnes SQL
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
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
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
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
98
Chapitre 3. Fonctions SQL
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.
Anne aa 19999
Trimestre qq 14
Month mm 112
Day dd 131
Dayofyear dy 1366
Hour hh 023
Minute mi 059
Second ss 059
Millisecond ms 0999
99
Partie de date Abrviation Valeurs
100
Chapitre 3. Fonctions SQL
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
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
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
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
104
Chapitre 3. Fonctions SQL
105
XMLELEMENT (fonction de chane de caractres) la page 254
XMLFOREST (fonction de chane de caractres) la page 255
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
Fonction Statut
Col_length Mise en oeuvre
106
Chapitre 3. Fonctions SQL
Fonction Statut
Curunreservedpgs Non mise en oeuvre
Data_pgs
Non mise en oeuvre
Host_name
Non mise en oeuvre
Rowcnt
Non mise en oeuvre
Suser_name
Mise en oeuvre
107
Fonction Statut
Tsequal Mise en oeuvre
User_name
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.
108
Chapitre 3. Fonctions SQL
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.
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
111
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
112
Chapitre 3. Fonctions SQL
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.
114
Chapitre 3. Fonctions SQL
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 )
116
Chapitre 3. Fonctions SQL
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 )
emp_lname emp_fname
Klobucher James
Kuo Felicia
Kelly Moira
118
Chapitre 3. Fonctions SQL
119
Syntaxe COMPARE (
expression_chane1,
expression_chane1
[ , nom_classement | , id_classement ] )
Valeur Signification
120
Chapitre 3. Fonctions SQL
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>
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].
122
Chapitre 3. Fonctions SQL
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 distante, mettez la ligne jour avec une valeur
diffrente de la manire suivante :
UPDATE Admin
SET TextCol = Remote Update
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
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 :
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]
8 108 hh:nn:ss
10 110 mm-jj-aa[aa]
11 111 [aa]aa/mm/jj
12 112 [aa]aammjj
126
Chapitre 3. Fonctions SQL
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 )
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.
128
Chapitre 3. Fonctions SQL
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
130
Chapitre 3. Fonctions SQL
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
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
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
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
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)
SMALLINT 2
INTEGER 4
DOUBLE 8
134
Chapitre 3. Fonctions SQL
partie_date :
year | quarter | month | week | day | hour | minute | second | millisecond
135
SELECT dateadd( month, 102, 1987/05/02 )
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
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]
138
Chapitre 3. Fonctions SQL
139
Syntaxe DAY ( expression_date )
140
Chapitre 3. Fonctions SQL
141
Normes et compatibilit SQL/92 Extension propritaire.
142
Chapitre 3. Fonctions SQL
143
Syntaxe DB_PROPERTY (
{ id_proprit | nom_proprit }
[, { id_basededonnes | nom_basededonnes } ] )
144
Chapitre 3. Fonctions SQL
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.
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;
146
Chapitre 3. Fonctions SQL
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
148
Chapitre 3. Fonctions SQL
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
sqlstate : chane
sqlcode: entier
Paramtres sqlstate Valeur SQLSTATE pour laquelle le message derreur doit tre
renvoy.
150
Chapitre 3. Fonctions SQL
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
152
Chapitre 3. Fonctions SQL
153
Syntaxe EVENT_CONDITION ( nom_condition )
DBSize Mo GrowDB
LogFreeSpace Mo LogDiskSpace
LogSize Mo GrowLog
TempFreeSpace Mo TempDiskSpace
TempSize Mo GrowTemp
154
Chapitre 3. Fonctions SQL
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)
156
Chapitre 3. Fonctions SQL
DisconnectReason Disconnect
EventName all
Executions all
NumActive all
TableName GlobalAutoincrement
157
Instruction CREATE EVENT la page 364
Instruction TRIGGER EVENT la page 673
158
Chapitre 3. Fonctions SQL
Valeur Description
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.
160
Chapitre 3. Fonctions SQL
123 123
123.45 123
123.45 124
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].
162
Chapitre 3. Fonctions SQL
Valeur Description
Valeur Description
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
Dans Interactive SQL, vous pouvez visualiser le plan renvoy par nimporte
quelle instruction SQL dans longlet Plan du volet Rsultats.
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
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.
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.
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);
167
Exemple Linstruction suivante renvoie le rsultat 21 :
SELECT HOUR( 1998-07-09 21:12:13 )
168
Chapitre 3. Fonctions SQL
HTML_DECODE (fonction)
Fonction Dcode les entits de caractres spciaux qui apparaissent dans les chanes
littrales HTML.
Syntaxe HTML_DECODE ( chane )
Caractres Substitution
" ; " ;
' ; ' ;
& ; &
< ; <
> ; >
&#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.
Caractres Substitution
" ;
' ;
& & ;
< < ;
> > ;
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
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
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
172
Chapitre 3. Fonctions SQL
173
SQL/99 Extension de Transact-SQL.
Sybase Non prise en charge par Adaptive Server Enterprise.
174
Chapitre 3. Fonctions SQL
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;
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
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.
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 )
178
Chapitre 3. Fonctions SQL
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
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
181
SELECT LIST( emp_id ORDER BY emp_lname, ; ) AS "Sorted IDs"
FROM EMPLOYEE
GROUP BY dept_id
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
183
Exemple Linstruction suivante renvoie le rsultat 1.698970 :
SELECT LOG10( 50 )
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.
184
Chapitre 3. Fonctions SQL
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
186
Chapitre 3. Fonctions SQL
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 )
188
Chapitre 3. Fonctions SQL
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 )
190
Chapitre 3. Fonctions SQL
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.
192
Chapitre 3. Fonctions SQL
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
194
Chapitre 3. Fonctions SQL
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(*).
196
Chapitre 3. Fonctions SQL
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].
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.
Valeur Description
198
Chapitre 3. Fonctions SQL
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.
prod_name prod_id
200
Chapitre 3. Fonctions SQL
201
emp_id first_name last_name phone_number
202
Chapitre 3. Fonctions SQL
203
dept_id emp_lname salary sex Rank
PI (fonction numrique)
Fonction Renvoie la valeur numrique PI.
Syntaxe PI ( * )
204
Chapitre 3. Fonctions SQL
Valeur Description
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.
205
Normes et compatibilit SQL/92 Extension propritaire.
206
Chapitre 3. Fonctions SQL
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 )
208
Chapitre 3. Fonctions SQL
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)
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
210
Chapitre 3. Fonctions SQL
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.
212
Chapitre 3. Fonctions SQL
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
214
Chapitre 3. Fonctions SQL
215
SELECT REGR_SLOPE (salary, (year(now()) - year(birth_date)))
FROM employee
216
Chapitre 3. Fonctions SQL
217
Syntaxe REGR_SYY ( expression_dpendante, expression_indpendante )
218
Chapitre 3. Fonctions SQL
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.
220
Chapitre 3. Fonctions SQL
221
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
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
222
Chapitre 3. Fonctions SQL
223
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise.
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
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
225
Exemple Linstruction suivante renvoie le rsultat 21 :
SELECT SECOND( 1998-07-13:21:21:25 )
226
Chapitre 3. Fonctions SQL
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 )
228
Chapitre 3. Fonctions SQL
La valeur renvoye (75) signifie que les deux valeurs sont similaires 75 %.
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 :
230
Chapitre 3. Fonctions SQL
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.
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)
0x08890997099709b30008000800080008
SELECT SORTKEY ( C-op, 51 )
SORTKEY( C-op, 51 )
0x08890997099709b30020004700020008000800080001fffd002d
232
Chapitre 3. Fonctions SQL
233
SQLDIALECT (fonction diverse)
Fonction Renvoie Watcom-SQL ou Transact-SQL pour indiquer le langage SQL
dune instruction.
Syntaxe SQLDIALECT ( chane_instruction_sql )
234
Chapitre 3. Fonctions SQL
235
Syntaxe STDDEV_SAMP ( expression_numrique )
236
Chapitre 3. Fonctions SQL
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.
Exemple Linstruction suivante renvoie une chane de six espaces suivie de 1235, pour
un total de 10 caractres :
SELECT STR( 1234.56 )
237
Normes et compatibilit SQL/92 Extension propritaire.
238
Chapitre 3. Fonctions SQL
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 )
SELECT SUBSTR(abcdefgh,2,-4)
240
Chapitre 3. Fonctions SQL
SELECT SUBSTR(abcdefgh,2,-1)
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.
241
Exemple Linstruction suivante renvoie le rsultat 0.572561 :
SELECT TAN( 0.52 )
242
Chapitre 3. Fonctions SQL
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 ( * )
243
Paramtres expression_chane Chane dont les blancs doivent tre supprims.
Normes et compatibilit SQL/92 Fonctionnalit dentre de gamme.
SQL/99 Fonction principale.
244
Chapitre 3. Fonctions SQL
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 )
246
Chapitre 3. Fonctions SQL
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
248
Chapitre 3. Fonctions SQL
249
Anne Trimestre Moyenne Variance
250
Chapitre 3. Fonctions SQL
251
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
252
Chapitre 3. Fonctions SQL
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
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.
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)
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.
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 )
258
Chapitre 3. Fonctions SQL
259
SQL/99 Extension propritaire.
Sybase Compatible avec Adaptive Server Enterprise
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
261
Sujet : page
262
Chapitre 4. Instructions SQL
Sujet : page
263
Sujet : page
264
Chapitre 4. Instructions SQL
Sujet : page
Instruction IF 540
265
Sujet : page
266
Chapitre 4. Instructions SQL
Sujet : page
267
Sujet : page
268
Chapitre 4. Instructions SQL
269
propritaire Identificateur reprsentant lID utilisateur propritaire dun
objet de base de donnes.
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
270
Chapitre 4. Instructions SQL
Dans ce cas, si vous optez pour loption QUOTES, ON ou OFF doit tre
spcifi. Les crochets et accolades ne doivent pas tre saisis.
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
nom_descripteur : chane
Autorisations Aucune.
Effets secondaires Aucun.
Voir aussi Instruction DEALLOCATE DESCRIPTOR [ESQL] la page 453
Zone descripteur SQL (SQLDA) [ASA - Guide de programmation,
page 195]
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
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.
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].
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].
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.
278
Chapitre 4. Instructions SQL
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 }
280
Chapitre 4. Instructions SQL
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
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.
282
Chapitre 4. Instructions SQL
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 ]
jour_de_semaine : chane
date_dpart : date
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.
284
Chapitre 4. Instructions SQL
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
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
288
Chapitre 4. Instructions SQL
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
description_article :
nom_table [ ( nom_colonne, . . . ) ]
[ WHERE condition_recherche ]
[ SUBSCRIBE BY expression ]
290
Chapitre 4. Instructions SQL
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
292
Chapitre 4. Instructions SQL
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
294
Chapitre 4. Instructions SQL
295
Lexemple suivant illustre la fermeture de toutes les connexions au serveur
distant nomm rem_test :
ALTER SERVER rem_test
CONNECTION CLOSE ALL
296
Chapitre 4. Instructions SQL
attributs_communs :
[ AUTHORIZATION { ON | OFF } ]
[ SECURE { ON | OFF } ]
[ USER { nom_utilisateur | NULL } ]
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
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
Une fois ces instructions excutes, utilisez nimporte quel navigateur Web
pour ouvrir lURL http://localhost/tables.
300
Chapitre 4. Instructions SQL
nom_utilisateur_ml : identificateur
options_protocole : chane
301
page 120].
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;
302
Chapitre 4. Instructions SQL
nom_utilisateur_ml : identificateur
options_protocole : chane
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
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
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.
308
Chapitre 4. Instructions SQL
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
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]
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
dfinition_trigger :
syntaxe de CREATE TRIGGER suivant le nom du trigger
313
Sybase Non prise en charge par Adaptive Server Enterprise.
314
Chapitre 4. Instructions SQL
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.
316
Chapitre 4. Instructions SQL
Instruction dconseille
Lutilisation de fichiers dcriture est dconseille.
Syntaxe ALTER WRITEFILE nom_fichier_criture
REFERENCES nom_fichier_base [ KEY cl ]
317
SQL/99 Extension propritaire.
Sybase Non prise en charge par Adaptive Server Enterprise.
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 } ]
chane_commentaire : chane
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
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]
322
Chapitre 4. Instructions SQL
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]
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
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
328
Chapitre 4. Instructions SQL
329
Instruction CALL
Description Appeler une procdure.
Syntaxe 1 [variable = ] CALL nom_procdure ( [ expression, . . . ] )
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
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
332
Chapitre 4. Instructions SQL
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
335
Instruction CLEAR [Interactive SQL]
Description Effacer les volets dInteractive SQL.
Syntaxe CLEAR
336
Chapitre 4. Instructions SQL
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
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 ]
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.
342
Chapitre 4. Instructions SQL
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
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 );
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.
Sybase Open Client Embedded SQL prend en charge une autre syntaxe
pour linstruction CONNECT.
346
Chapitre 4. Instructions SQL
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.
348
Chapitre 4. Instructions SQL
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 } ]
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].
352
Chapitre 4. Instructions SQL
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 ;
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.
354
Chapitre 4. Instructions SQL
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
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
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
360
Chapitre 4. Instructions SQL
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 } ]
362
Chapitre 4. Instructions SQL
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 ]
jour_de_semaine : chane
date_dpart : date
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
...
366
Chapitre 4. Instructions SQL
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
369
CREATE EVENT DailyBackup
SCHEDULE daily_backup
START TIME 1:00AM EVERY 24 HOURS
HANDLER
BEGIN
BACKUP DATABASE TO \\\\.\\tape0
ATTENDED OFF
END
370
Chapitre 4. Instructions SQL
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
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.
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
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 ]
374
Chapitre 4. Instructions SQL
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 }
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
378
Chapitre 4. Instructions SQL
Cl Abr- Description
viation
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]
380
Chapitre 4. Instructions SQL
fullname(joe,smith)
joe smith
Liste des noms de tous les employs :
SELECT fullname (emp_fname, emp_lname)
FROM employee
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
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
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.
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
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 .
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.
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 )
386
Chapitre 4. Instructions SQL
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
388
Chapitre 4. Instructions SQL
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 ]
}
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
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
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
IF
SELECT @variable =
CASE
LOOP
LEAVE
CONTINUE
CALL
EXECUTE
SIGNAL
RESIGNAL
DECLARE
SET VARIABLE
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
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
Cl Abr- Description
viation
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 :
B byte
C caractre
D double
F float
I int
J long
S short
V void
Z Boolen
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
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]
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
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.
400
Chapitre 4. Instructions SQL
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, . . . )
description_article :
nom_table [ ( nom_colonne, . . . ) ]
[ WHERE condition_recherche ]
[ SUBSCRIBE BY expression ]
402
Chapitre 4. Instructions SQL
403
CREATE PUBLICATION pub_contact (
TABLE contact,
TABLE company
)
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
adresse : chane
405
Utilisation de types de message [SQL Remote - Guide de lutilisateur,
page 229]
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
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 );
408
Chapitre 4. Instructions SQL
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
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]
410
Chapitre 4. Instructions SQL
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 ]
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
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.
414
Chapitre 4. Instructions SQL
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
nom_publication : identificateur
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
nom_utilisateur_ml : identificateur
options_protocole : chane
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].
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;
420
Chapitre 4. Instructions SQL
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
options_protocole : chane
422
Chapitre 4. Instructions SQL
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
424
Chapitre 4. Instructions SQL
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
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
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
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
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].
432
Chapitre 4. Instructions SQL
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.
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]
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
)
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
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.
438
Chapitre 4. Instructions SQL
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]
440
Chapitre 4. Instructions SQL
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;
END
442
Chapitre 4. Instructions SQL
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.
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
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 ]
448
Chapitre 4. Instructions SQL
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 ] ] ]
450
Chapitre 4. Instructions SQL
451
Instruction DEALLOCATE
Description Utilisez cette instruction pour librer les ressources associes un curseur.
Syntaxe DEALLOCATE [ CURSOR ] nom_curseur
nom_curseur : identificateur
452
Chapitre 4. Instructions SQL
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.
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.
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
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 }
nom_curseur : identificateur
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
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].
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
458
Chapitre 4. Instructions SQL
open crsr;
fetch crsr into tabname;
close crsr;
end
end
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
nom_curseur : identificateur
instruction_select : chane
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
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]
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 ...
466
Chapitre 4. Instructions SQL
spcif_table : [ propritaire.]nom_alias
propritaire : identificateur
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.
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
spcif_nom_long :
OWNER.TABLE.COLUMN | TABLE.COLUMN | COLUMN
nom_instruction : identificateur | var_hte
nom_sqlda : identificateur
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
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.
472
Chapitre 4. Instructions SQL
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
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
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 ]
476
Chapitre 4. Instructions SQL
477
Instruction DROP EXTERNLOGIN
Description Supprimer un login externe des catalogues dAdaptive Server Anywhere.
Syntaxe DROP EXTERNLOGIN nom_login TO serveur_distant
478
Chapitre 4. Instructions SQL
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
480
Chapitre 4. Instructions SQL
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
482
Chapitre 4. Instructions SQL
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 ) ]
484
Chapitre 4. Instructions SQL
valeur_souscription : chane
id_souscripteur : chane
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, . . . ]
486
Chapitre 4. Instructions SQL
nom_utilisateur_ml : identificateur
487
Instruction DROP VARIABLE
Description Supprimer une variable SQL.
Syntaxe DROP VARIABLE identificateur
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.
490
Chapitre 4. Instructions SQL
nom_sqlda : identificateur
nom_sqlda_cible : identificateur
491
programmation, page 181]).
492
Chapitre 4. Instructions SQL
argument :
[ @parameter-name = ] expression
| [ @parameter-name = ] @variable [ sortie ]
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
494
Chapitre 4. Instructions SQL
option_excution :
WITH QUOTES [ ON | OFF ]
| WITH ESCAPES { ON | OFF }
| WITH RESULT SET { ON | OFF }
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
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].
496
Chapitre 4. Instructions SQL
497
Instruction EXIT [Interactive SQL]
Description Quitter Interactive SQL.
Syntaxe { EXIT | QUIT | BYE } [ code_retour ]
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_sqlda : identificateur
500
Chapitre 4. Instructions SQL
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
nom_sqlda : identificateur
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
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
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
505
SQL/99 Fonction principale. Fonctionnalit de module stock de
manire permanente utilise dans les procdures.
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.
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
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.
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
513
SELECT *
FROM A, LATERAL( procedure-name( A.x ) ) LDT
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
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.
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]
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
...
516
Chapitre 4. Instructions SQL
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_sqlda : identificateur
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;
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]
520
Chapitre 4. Instructions SQL
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 ]
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
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 ]
524
Chapitre 4. Instructions SQL
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
528
Chapitre 4. Instructions SQL
adresse : chane
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]
530
Chapitre 4. Instructions SQL
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
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]
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
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.
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.
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
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
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.
540
Chapitre 4. Instructions SQL
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]
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
544
Chapitre 4. Instructions SQL
format_entre :
ASCII | DBASE | DBASEII | DBASEIII
| EXCEL | FIXED | FOXPRO | LOTUS
codage : identificateur ou chane
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.
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.
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 !
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);
549
Instruction SET OPTION la page 644
Instruction LOAD TABLE la page 563
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
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, . . . )
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
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
554
Chapitre 4. Instructions SQL
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
556
Chapitre 4. Instructions SQL
INSTALL JAVA
JAR Widgets
FROM FILE C:\Jars\Widget.zip
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
559
Instruction LEAVE
Description Quitter une instruction compose ou une boucle.
Syntaxe LEAVE tiquette_instruction
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
562
Chapitre 4. Instructions SQL
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 ) }
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 ...
564
Chapitre 4. Instructions SQL
Vous pouvez dfinir des dlimiteurs comportant jusqu 255 octets. Par
exemple,
...DELIMITED BY ### ...
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
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 :
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.
570
Chapitre 4. Instructions SQL
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.
573
Instruction LOOP
Description Rpter lexcution dune liste dinstructions.
Syntaxe [ tiquette_instruction : ]
[ WHILE condition_recherche ] LOOP
liste_instructions
END LOOP [ tiquette_instruction ]
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.
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;
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]
Linstruction :
CALL message_test()
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 )
{ ... }
578
Chapitre 4. Instructions SQL
nom_sqlda : identificateur
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]).
580
Chapitre 4. Instructions SQL
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;
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
582
Chapitre 4. Instructions SQL
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.
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
la page de code par dfaut de lordinateur sur lequel Interactive SQL est
excut.
585
Instruction UNLOAD TABLE la page 680
Normes et compatibilit SQL/92 Extension propritaire.
SQL/99 Extension propritaire.
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
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
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 , . . .
588
Chapitre 4. Instructions SQL
type_description :
[ ALL | BIND VARIABLES | INPUT | OUTPUT | SELECT LIST ]
[ LONG NAMES [ [ [ OWNER. ]TABLE. ]COLUMN ]
| WITH VARIABLE RESULT ]
589
0 Le jeu de rsultats est variable : il convient de dcrire lappel de
procdure aprs chaque instruction OPEN.
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
591
Instruction PREPARE TO COMMIT
Description Vrifier si un COMMIT peut sexcuter correctement.
Syntaxe PREPARE TO COMMIT
592
Chapitre 4. Instructions SQL
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_sqlda : identificateur
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.
594
Chapitre 4. Instructions SQL
595
Instruction RAISERROR [T-SQL]
Description Signaler une erreur et renvoyer un message au client.
Syntaxe RAISERROR numro_erreur [ chane_format ] [, liste_arguments ]
596
Chapitre 4. Instructions SQL
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
597
Instruction READ [Interactive SQL]
Description Lire les instructions Interactive SQL figurant dans un fichier.
Syntaxe READ [ ENCODING codage ] nom_fichier [ paramtres ]
598
Chapitre 4. Instructions SQL
{parameter-name}
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
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
classes__supprimer :
CLASS nom_classe_java [, nom_classe_java, . . .]
| JAR nom_jar [, nom_jar , . . .]
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}
]
604
Chapitre 4. Instructions SQL
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
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 ]
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 } ]
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.
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.
609
Instruction RESUME
Description Reprendre lexcution dun curseur qui renvoie des jeux de rsultats.
Syntaxe RESUME nom_curseur
610
Chapitre 4. Instructions SQL
Instruction RETURN
Description Quitter une fonction ou une procdure inconditionnellement, avec renvoi
ventuel dune valeur.
Syntaxe RETURN [ expression ]
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, . . .) ]
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).
614
Chapitre 4. Instructions SQL
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
616
Chapitre 4. Instructions SQL
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
617
Exemple REVOKE PUBLISH FROM publisher_ID
618
Chapitre 4. Instructions SQL
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]
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]
622
Chapitre 4. Instructions SQL
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 ]
624
Chapitre 4. Instructions SQL
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 ]
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
628
Chapitre 4. Instructions SQL
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
630
Chapitre 4. Instructions SQL
SELECT @@version
FROM DUMMY
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].
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]
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;
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;
636
Chapitre 4. Instructions SQL
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
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.
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
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.
640
Chapitre 4. Instructions SQL
nom_connexion :
identificateur , chane ou var_hte
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]
642
Chapitre 4. Instructions SQL
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 ]
644
Chapitre 4. Instructions SQL
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;
646
Chapitre 4. Instructions SQL
Syntaxe 3 SET
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].
648
Chapitre 4. Instructions SQL
649
Instruction SET SQLCA [ESQL]
Description Indiquer au prprocesseur SQL dutiliser une SQLCA diffrente de la sqlca
globale par dfaut.
Syntaxe SET SQLCA sqlca
650
Chapitre 4. Instructions SQL
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 ]
652
Chapitre 4. Instructions SQL
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
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].
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
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
656
Chapitre 4. Instructions SQL
Exemple Dmarrage dun serveur de base de donnes, nomm exemple, sans pour
autant dmarrer de base sur ce serveur :
START ENGINE AS sample
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
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 , . . .
660
Chapitre 4. Instructions SQL
661
Instruction START SYNCHRONIZATION DELETE
[MobiLink]
Description Redmarrer la consignation automatique des suppressions pour la
synchronisation MobiLink.
Syntaxe START SYNCHRONIZATION DELETE
662
Chapitre 4. Instructions SQL
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 ]
664
Chapitre 4. Instructions SQL
665
Instruction STOP JAVA
Description Arrter la machine virtuelle Java.
Syntaxe STOP JAVA
666
Chapitre 4. Instructions SQL
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 , . . .
668
Chapitre 4. Instructions SQL
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
671
Instruction SYSTEM [Interactive SQL]
Description Lancer un fichier excutable partir dInteractive SQL.
Syntaxe SYSTEM [chemin] nom_fichier
672
Chapitre 4. Instructions SQL
673
Instruction TRUNCATE TABLE
Description Supprimer toutes les lignes dune table, sans supprimer la dfinition de la
table.
Syntaxe TRUNCATE TABLE [ propritaire.]nom_table
674
Chapitre 4. Instructions SQL
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 ], . . .
]
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}
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
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}
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
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.
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 ], . . . ]
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, ...
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].
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
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;
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 }
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.
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 ], . . . ]
690
Chapitre 4. Instructions SQL
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].
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
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
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.
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
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.
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:
698
Chapitre 4. Instructions SQL
tiquette : identificateur
699
Instruction WHILE [T-SQL]
Description Excution itrative dune instruction ou dune instruction compose.
Syntaxe WHILE instruction_condition_recherche
700
Chapitre 4. Instructions SQL
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.
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
705
Sujet : page
706
Chapitre 5. Tables systme
Sujet : page
707
Table systme DUMMY
Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table
708
Chapitre 5. Tables systme
709
Table systme SYSARTICLE
Nom de colonne Type de co- Contrainte Contraintes de table
lonne de colonne
710
Chapitre 5. Tables systme
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.
712
Chapitre 5. Tables systme
713
attribute_value Valeur de lattribut.
714
Chapitre 5. Tables systme
715
Table systme SYSCAPABILITY
Nom de colonne Type de co- Contrainte Contraintes de table
lonne de colonne
716
Chapitre 5. Tables systme
717
Table systme SYSCHECK
Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table
718
Chapitre 5. Tables systme
719
Table systme SYSCOLLATIONMAPPINGS
Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table
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
721
is_grantable (Y/N) Caractre indiquant si lautorisation WITH GRANT
OPTION a t octroye sur la colonne.
722
Chapitre 5. Tables systme
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
format_str CHAR(128)
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
726
Chapitre 5. Tables systme
727
C sil sagit dune contrainte de vrification de colonne.
T sil sagit dune contrainte de table.
728
Chapitre 5. Tables systme
729
Table systme SYSEVENT
event_type_id INTEGER
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
732
Chapitre 5. Tables systme
733
Table systme SYSEXTERNLOGINS
Nom de colonne Type de colonne Contrainte Contraintes de
de colonne table
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
735
Table systme SYSFKCOL
Nom de colonne Type de Contrainte Contraintes de table
colonne de colonne
736
Chapitre 5. Tables systme
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.
738
Chapitre 5. Tables systme
739
Table systme SYSHISTORY
Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table
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
741
Table systme SYSINDEX
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
default_collation CHAR(10)
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
745
Table systme SYSIXCOL
Nom de colonne Type de co- Contrainte Contraintes de table
lonne de colonne
746
Chapitre 5. Tables systme
747
Table systme SYSJARCOMPONENT
Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table
component_type CHAR(1)
748
Chapitre 5. Tables systme
jar_id INTEGER
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
751
Table systme SYSOPTBLOCK
Cette table est rserve au systme.
752
Chapitre 5. Tables systme
753
Table systme SYSOPTJOINSTRATEGY
Cette table est rserve au systme.
754
Chapitre 5. Tables systme
755
Table systme SYSOPTQUANTIFIER
Cette table est rserve au systme.
756
Chapitre 5. Tables systme
757
Table systme SYSOPTREWRITE
Cette table est rserve au systme.
758
Chapitre 5. Tables systme
759
Table systme SYSPROCEDURE
avg_num_rows FLOAT
avg_cost FLOAT
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
761
Table systme SYSPROCPARM
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
763
Table systme SYSPROCPERM
Nom de colonne Type de colonne Contrainte Contraintes de table
de colonne
764
Chapitre 5. Tables systme
765
Table systme SYSREMOTEOPTION
Fonction Chaque ligne dcrit les valeurs dun paramtre de liaison de message
SQL Remote.
Colonnes
766
Chapitre 5. Tables systme
767
Table systme SYSREMOTETYPE
Nom de colonne Type de colonne Contrainte de Contraintes de
colonne table
768
Chapitre 5. Tables systme
time_sent TIMESTAMP
log_sent NUMERIC(20,0) NOT NULL
time_received TIMESTAMP
log_received NUMERIC(20,0) NOT NULL
confirm_received NUMERIC(20,0)
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
stop_time TIME
start_date DATE
days_of_week TINYINT
interval_units CHAR(10)
interval_amt INTEGER
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
HH = heures
NN = minutes
SS = secondes
772
Chapitre 5. Tables systme
773
Table systme SYSSQLSERVERTYPE
Nom de colonne Type de co- Contrainte de Contraintes de
lonne colonne table
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
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
progress NUMERIC(20,0)
site_name CHAR(128)
log_sent NUMERIC(20,0)
776
Chapitre 5. Tables systme
777
Table systme SYSTABLE
remarks LONG
VARCHAR
existing_obj CHAR(1)
remote_location LONG
VARCHAR
remote_objtype CHAR(1)
778
Chapitre 5. Tables systme
source LONG
VARCHAR
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
781
peut prendre lune des trois valeurs suivantes :
N Lautorisation na pas t octroye.
Y Lautorisation a t octroye.
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
referential_action CHAR(1)
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
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
787
Table systme SYSUSERPERM
password BINARY(36)
788
Chapitre 5. Tables systme
789
Table systme SYSUSERTYPE
default LONG
VARCHAR
check LONG
VARCHAR
format_str CHAR(128)
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
user_id UNSI-
GNED INT
paramtre VAR-
CHAR(250)
792
Chapitre 5. Tables systme
793
Autres tables systmes
Les informations suivantes portent sur les tables systme utilises par Java
dans la base de donnes et SQL Remote.
794
Chapitre 5. Tables systme
795
CHAPITRE 6
Vues systme
Prsentation Ce chapitre rpertorie les vues prdfinies pour les tables systme.
Sommaire Sujet : page
Introduction 798
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.
798
Chapitre 6. Vues systme
799
Vue systme SYSCOLUMNS
800
Chapitre 6. Vues systme
801
Vue systme SYSPUBLICATIONS
802
Chapitre 6. Vues systme
803
Vue systme SYSSUBSCRIPTIONS
804
Chapitre 6. Vues systme
805
Vue systme SYSTABAUTH
806
Chapitre 6. Vues systme
807
Vue systme SYSVIEWS
808
Chapitre 6. Vues systme
809
Nom de la table Description Donnes ?
sysprocedures Une ligne pour chaque vue, rgle, valeur par Non
dfaut, trigger ou procdure, indiquant leur
dfinition interne.
810
Chapitre 6. Vues systme
sysusermes- Une ligne pour chaque message dfini par Oui (table
sages lutilisateur. systme
Adaptive
Server
Anywhere)
811
Nom de la table Description Donnes ?
812
CHAPITRE 7
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
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.
814
Chapitre 7. Fonctions et procdures systme
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
Jeux de rsultats
816
Chapitre 7. Fonctions et procdures systme
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Option de serveur -zl [ASA - Guide dadministration, page 186]
Procdure systme sa_server_option la page 872
817
Syntaxe sa_conn_compression_info ( [ id_connexion ] )
818
Chapitre 7. Fonctions et procdures systme
819
Nom de colonne Type de donnes Description
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()
820
Chapitre 7. Fonctions et procdures systme
821
Nom de colonne Type de donnes Description
79 DBA 0 ...
46 Sybase Central 1 DBA 0 ...
822
Chapitre 7. Fonctions et procdures systme
823
Number PropNum PropName ...
79 37 CacheHits ...
79 38 CacheRead ...
824
Chapitre 7. Fonctions et procdures systme
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()
826
Chapitre 7. Fonctions et procdures systme
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
828
Chapitre 7. Fonctions et procdures systme
0 0 ConnCount ...
0 1 IdleCheck ...
0 2 IdleWrite ...
sa_disable_auditing_type
Fonction Dsactiver laudit dvnements spcifiques.
Syntaxe sa_disable_auditing_type ( chane )
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]
830
Chapitre 7. Fonctions et procdures systme
dbspace_name free_space
SYSTEM 10952101888
sa_enable_auditing_type
Fonction Activer laudit et indique les vnements auditer.
Syntaxe sa_enable_auditing_type ( chane )
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]
CALL sa_enable_auditing_type(options)
Jeux de rsultats
832
Chapitre 7. Fonctions et procdures systme
1 IdleWrite ...
2 IdleChkPt ...
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
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
834
Chapitre 7. Fonctions et procdures systme
835
Nom de colonne Type de donnes Description
836
Chapitre 7. Fonctions et procdures systme
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)
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
Jeux de rsultats
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)
Jeux de rsultats
840
Chapitre 7. Fonctions et procdures systme
841
nom_propritaire Paramtre char(128) facultatif spcifiant le nom du
propritaire.
Jeux de rsultats
842
Chapitre 7. Fonctions et procdures systme
843
Nom de colonne Type de don- Description
nes
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()
Jeux de rsultats
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].
846
Chapitre 7. Fonctions et procdures systme
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
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
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;
850
Chapitre 7. Fonctions et procdures systme
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
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
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
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 )
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]
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 )
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 )
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]
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 )
861
Syntaxe sa_procedure_profile (
[ nom_objet_p
[, nom_propritaire_p
[, nom_table_p ] ] ]
)
862
Chapitre 7. Fonctions et procdures systme
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)
864
Chapitre 7. Fonctions et procdures systme
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
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)
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]
867
interne cr par le serveur de base de donnes.
Syntaxe sa_report_deadlocks( )
Jeux de rsultats
868
Chapitre 7. Fonctions et procdures systme
page 127]
869
fin_l Paramtre entier facultatif spcifiant la valeur de fin. La valeur par
dfaut est 100.
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.
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
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)
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;
872
Chapitre 7. Fonctions et procdures systme
ProfileFilterConn id_connexion
ProfileFilterUser id_utilisateur
QuittingTime Date et heure Option de serveur
correctes -tq
RequestFilter- id_connexion, -1
Conn
RequestFilterDB id_base_de_-
donnes, -1
RequestLogFile Nom de fichier Option de serveur
-zo
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.
874
Chapitre 7. Fonctions et procdures systme
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()
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 )
START DATABASE
STOP ENGINE
STOP DATABASE
prparation dinstruction
xcution dinstruction
876
Chapitre 7. Fonctions et procdures systme
instructions COMMIT
instructions ROLLBACK
oprations PREPARE TO COMMIT
connexions
dconnexions
dbuts de transactions
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)
878
Chapitre 7. Fonctions et procdures systme
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
880
Chapitre 7. Fonctions et procdures systme
Jeux de rsultats
881
Procdure systme sa_validate
Fonction Valider toutes les tables dune base de donnes.
Syntaxe sa_validate (
[ nom_table
[, nom_propritaire
[, type_vrif ] ] ] )
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)
Autorisations Aucune
Effets secondaires Aucun
Voir aussi Procdures systme Adaptive Server Enterprise la page 906
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]
884
Chapitre 7. Fonctions et procdures systme
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 )
Jeux de rsultats
886
Chapitre 7. Fonctions et procdures systme
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 ] ]
)
888
Chapitre 7. Fonctions et procdures systme
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)
889
Syntaxe sp_remote_primary_keys (
@nom_serveur
[, @nom_table
[, @propritaire_table
[, @qualificatif_table ] ] ]
)
Jeux de rsultats
890
Chapitre 7. Fonctions et procdures systme
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 )
892
Chapitre 7. Fonctions et procdures systme
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
895
Les sections suivantes prsentent en dtail chacune des procdures systme
de messagerie.
896
Chapitre 7. Fonctions et procdures systme
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 )
898
Chapitre 7. Fonctions et procdures systme
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
13 Disque satur
14 Echec
15 Mmoire insuffisante
16 Session incorrecte
20 Destinataire inconnu
21 Echec de login
23 Abandon de lutilisateur
25 Pas de startmail
0 Russite
899
Code de retour Signification
900
Chapitre 7. Fonctions et procdures systme
Option Description
901
Option Description
Version Description
Fonction Renvoyer le contenu dun fichier sous forme de variable LONG BINARY.
Syntaxe [ variable = CALL ] xp_read_file ( nom_fichier )
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 )
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 ]
)
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! );
Fonction Extraire des sous-chanes dune chane dentre et dune chane format.
903
Syntaxe [ variable = CALL ] xp_scanf (
chane_entre,
chane_format
[, chane_rsultat ]
)
Fonction Ecrire des donnes dans un fichier partir dune instruction SQL.
Syntaxe [ variable = CALL ] xp_write_file ( nom_fichier , contenu_fichier )
904
Chapitre 7. Fonctions et procdures systme
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.
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.
906
Chapitre 7. Fonctions et procdures systme
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 :
908
Chapitre 7. Fonctions et procdures systme
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
912
Index
913
Index
914
Index
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
917
Index
918
Index
919
Index
920
Index
921
Index
922
Index
923
Index
924
Index
925
Index
926
Index
927
Index
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
930
Index
931
Index
932
Index
933
Index
934
Index
935
Index
936
Index
937
Index
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
940
Index
941
Index
942
Index
943
Index
944
Index
945
Index
946
Index
947
Index
948
Index
949
Index
950
Index
951
Index
952
Index
953
Index
954
Index
955
Index
956
Index
957
Index
958
Index
959
Index
960
Index
961
Index
962
Index
963
Index
964
Index
965