Databasanslutning TDS- Tabular Data Stream (SQL) OLE DB- Data som kan representeras som rad och kolumn ODBC- Open Data Base Connectivity (Data Source Name.

Slides:



Advertisements
Liknande presentationer
Master Data Management (MDM) for the enterprise using BizTalk 2006 R2
Advertisements

Databaser & databasdesign
Ncg | sweden om | navigator xlreport Oskar Kristiansen
Mellanblå fält till höger: Plats för bild – foto, diagram, film, andra illustrationer Comparison of some instruments and methods for determination of sunshine.
Page 1 GADD Software en introduktion Publik version, September 2013, gaddsoftware.com.
Nyinstallerad Webinfo •I Central parameters skapa parametern Statlogger och ge value 1 Logga endast vissa sidor genom att skapa parametern i PageId.
En "djyp" dykning I SharePoint's sök tjänst
DATABASHANTERING för programmerare
Forskarservice – under arbete Stefan Carlstein Högskolebiblioteket i Jönköping
FILM & TV Webbsida Lena Bergholm, Jesper Åbonde, Ron Holmström, Jonne Sundell.
Live Communication Server 2005 with SP1 Martin Lidholm
Inmatning till databaser
Can we forecast the demand for high speed rail? MARIA BÖRJESSON 27 november 2009, 1.
Next previous Innehåll Klassen URL Arbeta med URLer, exempel Referenser Harold,”Java Network Programming”, Elliotte Harold Hall, "CORE Web Programming"
Välkommen till Sommarkollo Windows Communication Foundation André Henriksson, Johan Lindfors.
Datamining i SQL Server 2005
Backup strategies “in-a-nutshell” by System Center Robert Hedblom MVP System Center Cloud and Datacenter Management MEET member TechNet Moderator Consultant.
Programmering II C#, ID1304.
Introföreläsning om publiceringssystem Om publiceringssystem, lektion ett.
Välkommen till ett Online Seminarie om Communications Server ”14” Vi startar klockan 12:00 Martin Lidholm – MVP Communications Server
Microsoft Office SharePoint Server 2007 – del 1 Pontus Haglund Mid Market Solutions Specialist Microsoft AB.
Microsofts Produkter Mikael Nyström Senior Executive Consultant - TrueSec MVP Windows Server – Setup/Deployment
Systems Management Server 2003 Översikt Service Pack 1 och programdistribution Anders Grönlund Presale Zipper AB Översikt Service Pack 1 och programdistribution.
Att integrera databaser med Java
Next previous Innehåll Klassen URL Arbeta med URLer, exempel Speciella referenser (som används i här) Harold, dvs kursboken ”Java Network Programming”
Databaser i B2KUNO Johan Eklund. Hur går jag vidare? Avancerade tillämpningar:  Analysera data  Generera information Utveckla följande färdigheter:
Java Nätverks API URL sockets.
Introföreläsning CS Om publiceringssystem, lektion ett.
Streams and File I/O Kapitel 10. Agenda Exceptions Textfiler Skriva Appenda Läsa File Sökvägar.
1 Windows Azure Mikael ÖstbergTorkel Ödegaard. 2.
SQLServer 2008 För utvecklare
ASP.NET MVC4 + NoSQL = Major Awesomness. IoC Container.
Akta er, jag är farlig./ Be aware, I am danger. Jag heter Mysan. My name is Mysan.
DATABASHANTERING för programmerare Lektion 1 Mahmud Al Hakim
DATABASHANTERING för programmerare Lektion 3 Mahmud Al Hakim
ASP.NET 2.0 Providermodellen André Henriksson UtvecklarevangelistMicrosoft.
Microsoft Azure Web Sites IRL Robert Folkesson, Active Solution
DATABASHANTERING för programmerare Lektion 4 Mahmud Al Hakim
LINQ i alla dess smaker Johan Lindfors blogs.msdn.com/johanl Patrik Löwendahl
Systemutveckling i molnet - IRL Chris KlugRobert Folkesson.
OSD LIT/ZTI – Bending the rules Johan Arwidmark och Mikael Nyström.
Databashantering Do it Max-style!. SELECT SELECT vad FROM tabellnamn Exempel: ◦ SELECT * FROM stralin_max  * = Välj allt som finns i tabellen ◦ SELECT.
1969 – Bell Labs Multics utvecklas men läggs ner Thompson & Ritchie skapar Unics (senare Unix) för att spela Space Traveler.
Exempelbaserade specifikationer med SpecFlow
ASP.NET 2.0 André Henriksson Developer Evangelist Microsoft AB.
Flexicon – Din systempartner
UTVECKLING MED RAMVERKET.NET Marcus Medina. Dagens visdomsord “Det verkar alltid omöjligt tills dess att det är gjort” Nelson Mandela.
Java servlets och databaskopplingar
Mahmud Al Hakim 2  Mål för kursen  Kursplanering  Kurslitteratur  Betygsättning  Grunder om databaser  Tabeller.
Microsoft Visual Studio och.NET Framework, idag och imorgon! Robert Folkesson
Databas.
Anything else? Yes, a Windows client "To Go", please! Tim Nilimaa.
ISV Community Day Till sist Per Ahlberg Developer Evangelist Developer & Platform Evangelism Microsoft Sweden.
DA7351 Programmering 1 Databas SQL Föreläsning 24.
OPC lösningar Softing har även produkter för OPC:
IT Fördjupning Göran Wiréen.
Från databas till Excel
IT Databas Göran Wiréen
Från databas till Excel
IT Fördjupning Lektion 3
Registervård inför första MIT-leveransen - ovana registervårdare
IT Fördjupning Jon Wide
Repetition Del 1.
TOTALFÖRSVAR, FÖRMÅGA, KRIS & BEREDSKAP
IT Databas Göran Wiréen
Databas.
Bits in the Air Airwaves have been regulated by the government (FRC, FCC) for years First radio transmissions (wireless telegraph) were unregulated and.
Presentationens avskrift:

Databasanslutning TDS- Tabular Data Stream (SQL) OLE DB- Data som kan representeras som rad och kolumn ODBC- Open Data Base Connectivity (Data Source Name DSN) ODBC databas MS SQL ExcelAccess OleDb provider for ODBC OleDb provider Jet TDS provider (SQL-Client) Hanteras direkt av CLR ODBC driver(DSN) VB,C#….. {ASP.NET-sida} Andra datakällor OleDb provider Exchange Prestanda MySQL, Textfil m.fl Oracle Eget ”NameSpace” ADO.NET

Access Open/Close <% Dim myConnection As OleDbConnection *1 Deklarationer myConnection = New OleDbConnection( "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=c:\inetpub\database\myData.mdb" ) *2 Dataförberedelser myConnection.Open() *3 Läs/skriv mm. myConnection.Close() %> SQL Open/Close <% Dim myConnection As SqlConnection *1 Deklarationer myConnection = New SqlConnection( "server=localhost;uid=sa;pwd=secret;database=my Data" ) *2 Dataförberedelser myConnection.Open() *3 Läs/skriv mm. myConnection.Close() %> Öppna anslutning till DB A*A* S*S* *? Platsreferens för senare bruk!

Oracle Open/Close <% Dim myConnection As OleDbConnection myConnection = New OleDbConnection ("Provider=OraOLEDB.Oracle; User Id=ORANET;Password=ORANET; Data Source=orcl9i.idc.oracle.com; OLEDB.NET=true”" ) myConnection.Open() Läs/skriv mm. myConnection.Close() %> Not. Reservation för formatet för datasource och hur OraOLEDB.Oracle installeras. Har du Oracle finns det säkert hjälp. Open med extra tid (default 15s) <% Dim myConnection As SqlConnection *1 myConnection = New SqlConnection( "server=localhost;uid=sa;pwd=secret;database=my Data" ;Connect Timeout = 90 ) *2 myConnection.Open() *3 Läs/skriv mm. myConnection.Close() %> Öppna anslutning till DB. Mer S *2 Use Oracle’s.Net feature

ODBC Open/Close <% Dim myConnection As OleDbConnection myConnection = New OleDbConnection( ”DSN=myDSN" ) myConnection.Open() Läs/skriv mm. myConnection.Close() %> Not. DSN (myDSN) måste skapas först med ODBC Data Source Administrator Fördel: DSN anslutningsinformation testa en gång, när den skapas. Den som skapar den har rättigheterna! ODBC-connector finns även bl.a för mySQL, textfil, excel m.fl. Öppna anslutning till DB. Ännu mer

ODBC Open Data Base Connectivity Using Data Sources (ODBC) Eget Kompendium

Access: Insert INTO ____ <% Dim myConnection As OleDbConnection Dim myCommand As OleDbCommand myConnection = New OleDbConnection( "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=c:\inetpub\database\myData.mdb" ) myCommand = New OleDbCommand( "Insert INTO testTable ( col1 ) Values ( ’Hello' )", myConnection ) myConnection.Open() myCommand.ExecuteNonQuery() myConnection.Close() %> SQL: Insert ____ <% Dim myConnection As SqlConnection Dim myCommand As SqlCommand myConnection = New SqlConnection( "server=localhost;uid=sa;pwd=secret;database=my Data" ) myCommand = New SqlCommand( "Insert testTable ( col1 ) Values ( 'Hello' )", myConnection ) myConnection.Open() myCommand.ExecuteNonQuery() myConnection.Close() %> Insert-command Insert-command INSERT tablename (column1, column2…) VALUES (value1, value2…)

Update: ACCESS UPDATE tablename SET column1 = value1, column2 = value2…WHERE sökuttryck <% Dim myConnection As OleDbConnection Dim myCommand As OleDbCommand myConnection = New OleDbConnection( "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=c:\inetpub\database\myData.mdb" ) myCommand= New OleDbCommand( "UPDATE testTable SET col1='hello’ WHERE col1='fred'", myConnection ) myConnection.Open() myCommand.ExecuteNonQuery() myConnection.Close() %>

Update: SQL UPDATE tablename SET column1 = value1, column2 = value2…WHERE sökuttryck <% Dim myConnection As SqlConnection Dim myCommand As SqlCommand myConnection = New SqlConnection("server=localhost;uid=sa;pwd=secret; database=myData” ) myCommand= New SqlCommand( "UPDATE testTable SET col1='hello’ WHERE col1='fred'", myConnection ) myConnection.Open() myCommand.ExecuteNonQuery(). myConnection.Close() %>

Update: SQL mer UPDATE tablename SET column1 = value1, column2 = value2…WHERE sökuttryck <% Dim myConnection As SqlConnection Dim myCommand As SqlCommand Dim recordsAffected As Integer myConnection = New SqlConnection("server=localhost;uid=sa;pwd=secret; database=myData” ) myCommand= New SqlCommand( "UPDATE testTable SET col1='hello’ WHERE col1='fred'", myConnection ) myConnection.Open() recordsAffected = myCommand.ExecuteNonQuery(). myConnection.Close() %>

Access DELETE FROM____WHERE SQL DELETE ____ WHERE Andra kommandon: SELECT column1, column2 FROM tablename1, tablename2 WHERE sökuttryck {SELECT * FROM tablename} Dim myDataReader As OleDbDataReader Dim myDataReader As SqlDataReader O.S.V. DELETE tablename WHERE sökuttryck

<% Dim myConnection As SqlConnection Dim myCommand As SqlCommand Dim myDataReader As SqlDataReader myConnection = New SqlConnection( "server=localhost;uid=sa;pwd=secret;pwd=secret;database=Pubs" ) myConnection.Open() myCommand = New SqlCommand( "Select * from Authors", myConnection ) myDataReader = myCommand.ExecuteReader() While myDataReader.Read() Response.Write( myDataReader.Item( "au_lname" ) ) End While myDataReader.Close() myConnection.Close() %> ’au_lname är en column i databasen (last name).Item-property konverterar värdet till ”lämplig”.NET datatyp SQL DataReader

<% Dim myConnection As SqlConnection Dim myCommand As SqlCommand Dim FirstName As String = "Robert” Dim LastName As String = "Johnson" myConnection = New SqlConnection( "server=localhost;uid=sa;pwd=secret;database=myData" ) myConnection.Open() myCommand = New SqlCommand( "Insert Authors ( FirstName, LastName ) )", myConnection ) myCommand.Parameters.Add( New SqlParameter( SqlDbType.Varchar, 30 )) myCommand.Parameters( ).Value = FirstName myCommand.Parameters.Add( New SqlParameter( SqlDbType.Varchar, 30 )) myCommand.Parameters( ).Value = LastName myCommand.ExecuteNonQuery() myConnection.Close() %> ’Parameter måste naturligtvis matcha platshållarens namn i SQL-satsen och börja Parametrar med SQL-Kommandon Platshållare Parametrar ger effektivare frågor och frågorna blir dynamiska. (Bättre exempel på bra kod finns i boken) Faktaruta

Lagrad procedur (Stored Procedure) till ADO.NET, fördelar. Kan ses som färdiga SQL-satser ”Frågorna” kan återanvändas Koden blir lättare att läsa Sparar programmerings-tid Programmet blir snabbare –SQL-koden kompileras –exekveringsplan sätts upp (snabbare nästa gång) Vid ändring av databas/SQL-sats kan det ske på ett ställe. (Modularisering, objektprogrammeringens grund)

<% Dim myConnection As SqlConnection Dim myCommand As SqlCommand Dim FirstName As String = "Robert” Dim LastName As String = "Johnson" myConnection = New SqlConnection( "server=localhost;uid=sa;pwd=secret;database=myData" ) myConnection.Open() myCommand = New SqlCommand( "InsertAuthors", myConnection ) myCommand.CommandType = CommandType.StoredProcedure myCommand.Parameters.Add( New SqlParameter( SqlDbType.Varchar, 30 )) myCommand.Parameters( ).Value = FirstName myCommand.Parameters.Add( New SqlParameter( SqlDbType.Varchar, 30 )) myCommand.Parameters( ).Value = LastName myCommand.ExecuteNonQuery() myConnection.Close %> ’Istället för SQL-kommando så skickas namnet på en lagrad procedur "InsertAuthors” ’och sedan talar man också om vilken kommandotyp det är, och skickar parametrar. Lagrad procedur (Stored Procedure) till ADO.NET create procedure Varchar( 50 Varchar( 50 ) AS Insert Authors ( FirstName, LastName ) ) GO I Databasen !

Lagrad procedur i MS SQL För att skapa en lagrad procedur i MS-SQL så används: SQL Query Analyzer eller knappa kod direkt (råare) CREATE byts mot ALTER för kod som ska ändra en befintlig procedur KÖR

Query Analyzer i MS SQL Här kan man se och även dra&släppa ”kolumner” mm. rakt in i Query’n

Lagrad procedur, knappa kod Här har jag min procedur från Query Analyzer Högerklick, New Stored Procedure

Lagrad procedur, knappa kod Det här är procedurens ”kör- kommando”. Det läggs till automatiskt när proceduren skapas När man väljer OK så skapas proceduren Här är det bara att knappa in kod

Lagrad procedur, Check Syntax Här sätter man vilka som ska få köra, oftast måste proceduren sparas först och sedan öppnas för editering innan Permissions kan sättas Test att man skrivit koden rätt, ingen test att det verkligen fungerar.

Lagrad procedur, Permissions

<% Dim myConnection As SqlConnection Dim myCommand As SqlCommand Dim myParam As SqlParameter myConnection = New SqlConnection( "server=localhost;uid=sa;pwd=secret;database=myData" ) myConnection.Open() myCommand = New SqlCommand( "getLastName", myConnection ) myCommand.CommandType = CommandType.StoredProcedure myParam = myCommand.Parameters.Add( New SqlParameter( "RETURN_VALUE", SqlDbType.INT )) myParam.Direction = ParameterDirection.ReturnValue myParam = myCommand.Parameters.Add( New SqlParameter( SqlDbType.Varchar, 50 )) myParam.Direction = ParameterDirection.Input myParam.Value = "Robert” myParam = myCommand.Parameters.Add( New SqlParameter( SqlDbType.Varchar, 50 )) myParam.Direction = ParameterDirection.Output myCommand.ExecuteNonQuery() If myCommand.Parameters( "RETURN_VALUE" ).Value Then Response.Write( "The last name is " & MyCommand.Parameters( ).Value ) Else Response.Write( "No author found!" ) END If myConnection.Close() %> UtParameter med SQL-Kommandon Det gamla vanliga Hur är detta möjligt? Svar i proceduren.

getLastName create procedure Varchar( 50 Varchar( 50 ) Output AS = LastName From Authors WHERE FirstName is Null Return( 0 ) ELSE Return( 1 ) I Databasen I ASP.NET: True = 1 / False = 0

ParameterDirection för Procedur VB/C# Input InputOutput Output ReturnValue ( Inte inputparameter ) SQL (T-SQL) ”inget” Output Return ( ) –VarChar –Money –Date –Int –… Return parameters can be of any data type except the text or image data types. ex. ReturnValue Integer – Return int

”Måsten” Formulärdata ( Ska alltid valideras innan dom skickas) If isValid Then ”Spara data till DB” End If Före kod i Page –Option Explicit ON –Option Strict ON ex. Håller koll på att variabler har deklarerats. (Default = ON) Håller koll på datakonverteringar så att data inte förloras

Felhantering Alltid när du kontaktar system utanför. Exceptions try kod catch ex As Exception Hantera ”felet” finally Avsluta end try Fortsätt med koden. Om det går dåligt, hoppa ur till ”catch”. Flera ”nivåer” med Exceptions och hantering av dessa kan radas upp. Egna kan också skapas och hanteras.

Felhantering Alltid när du kontaktar system utanför. try kod (throw new DevideByZeroException) kod catch DBZex As DevideByZeroException Hantera ”felet” catch FNFex As FileNotFoundException Hantera ”felet” catch sqlex As SQLException Hantera ”felet” catch ex As Exception Hantera ”felet” finally Avsluta end try Fortsätt med koden. Om det går dåligt, kasta en egen Exception någonstans i din kod. Flera ”nivåer” med Exceptions och hantering av dessa kan radas upp. Egna kan också skapas och hanteras. Ordningen av catch viktig varför jag reserverar mig mot riktigheten i exemplet Kan liknas med Else i en If-sats Körs alltid

Felhantering Alltid när du kontaktar system utanför. Några Exceptions System.AppDomainUnloadedException System.ArgumentException System.ArithmeticException System.ArrayTypeMismatchException System.BadImageFormatException System.CannotUnloadAppDomainException System.ComponentModel.Design.Serialization.CodeDomSerializerException System.ComponentModel.LicenseException System.ComponentModel.WarningException System.Configuration.ConfigurationException System.Configuration.Install.InstallException System.ContextMarshalException System.Data.DataException System.Data.DBConcurrencyException System.Data.SqlClient.SqlException System.Data.SqlTypes.SqlTypeException System.Drawing.Printing.InvalidPrinterException System.EnterpriseServices.RegistrationException System.EnterpriseServices.ServicedComponentException System.ExecutionEngineException System.FormatException System.IndexOutOfRangeException System.InvalidCastException System.InvalidOperationException System.InvalidProgramException System.IO.InternalBufferOverflowException System.IO.IOException System.Management.ManagementException System.MemberAccessException System.MulticastNotSupportedException System.NotImplementedException System.NotSupportedException System.NullReferenceException System.OutOfMemoryException System.RankException System.Reflection.AmbiguousMatchException System.Reflection.ReflectionTypeLoadException System.Resources.MissingManifestResourceException

Felhantering Alltid när du kontaktar system utanför. Exceptions System.Runtime.InteropServices.ExternalException System.Runtime.InteropServices.InvalidComObjectException System.Runtime.InteropServices.InvalidOleVariantTypeException System.Runtime.InteropServices.MarshalDirectiveException System.Runtime.InteropServices.SafeArrayRankMismatchException System.Runtime.InteropServices.SafeArrayTypeMismatchException System.Runtime.Remoting.RemotingException System.Runtime.Remoting.ServerException System.Runtime.Serialization.SerializationException System.Security.Cryptography.CryptographicException System.Security.Policy.PolicyException System.Security.SecurityException System.Security.VerificationException System.Security.XmlSyntaxException System.ServiceProcess.TimeoutException System.StackOverflowException System.Threading.SynchronizationLockException System.Threading.ThreadAbortException System.Threading.ThreadInterruptedException System.Threading.ThreadStateException System.TypeInitializationException System.TypeLoadException System.TypeUnloadedException System.UnauthorizedAccessException System.Web.Services.Protocols.SoapException System.Xml.Schema.XmlSchemaException System.Xml.XmlException System.Xml.XPath.XPathException System.Xml.Xsl.XsltException

SystemException (Det finns mer…) Public Properties HelpLink (inherited from Exception) Gets or sets a link to the help file associated with this exception. InnerException (inherited from Exception) Gets the Exception instance that caused the current exception. Message (inherited from Exception) Gets a message that describes the current exception. Source (inherited from Exception) Gets or sets the name of the application or the object that causes the error. StackTrace (inherited from Exception) Gets a string representation of the frames on the call stack at the time the current exception was thrown. TargetSite (inherited from Exception) Gets the method that throws the current exception. Public Methods ToString (inherited from Exception) Overridden. Creates and returns a string representation of the current exception. Equals (inherited from Object) Overloaded. Determines whether two Object instances are equal. GetBaseException (inherited from Exception) When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions. Kan skrivas ut under felsökning Felmeddelanden från SQL är ”bra”

<% Dim myConnection As SqlConnection Dim myCommand As SqlCommand ’Dim myParam As SqlParameter Dim myTrans As SqlTransaction myConnection = New SqlConnection( "server=localhost;uid=sa;pwd=secret;database=myData" ) ’Nytt kommando myConnection.Open() myTrans= myConnection.BeginTransaction() myCommand.Transaction =myTrans try myCommand.ExecuteNonQuery() ’Nytt kommando myCommand.ExecuteNonQuery() MyTrans.Commit catch ex as SQLException myTrans.Rollback() finally myConnection.Close() end try %> Transaktioner Du vet att alla SQL-frågorna körts. Det gamla vanliga Startpunkt. Samtliga kommandon måste genomföras, annars ska inget genomföras Allt gick tydligen bra, gör ”commit” Det gick dåligt, ångra allt gör ”rollback” Stäng efter dig

Triggers (i databasen) Varje AFTER Trigger kan bara finnas mot en Tabell Databasen uppdateras först när Triggern är avslutad (Rollback möjligt). Man kan ha flera Triggers på samma kommando, första och sista kan bestämmas men övriga vet man inget om. [AFTER är default för Triggers så det kan uteslutas] Databasen uppdateras när/om din kod i Triggern gör det. Endast en INSTEAD OF Trigger för varje kommando och Tabell/Vy Att ändra data i en vy är normalt begränsad, m.h.a INSTEAD OF kan man oftast komma förbi det. INSTEAD OF CREATE TRIGGER namn ON Tabell/Vy INSTEAD OF {INSERT | UPDATE | DELETE} AS SQL-kod GO AFTER CREATE TRIGGER namn ON Tabell (AFTER) {INSERT | UPDATE | DELETE} AS SQL-kod GO

Egna funktioner (i databasen) User defined functions input-parametrar men endast 1 resultat (ett värde eller tabell) CREATE FUNCTION namn datatyp [= default], ) TABLE ( column_definition |table_constraint) WITH {ENCRYPTION, SCHEMABINDING} AS BEGIN SQL-KOD RETURN END Ex. money = 0.0

Stored ProceduresWhen you create an application with Microsoft® SQL Server™ 2000, the Transact-SQL programminglanguage is the primary programming interface between your applications and the SQL Serverdatabase. When you use Transact-SQL programs, two methods are available for storing and executingthe programs. You can store the programs locally and create applications that send the commands toSQL Server and process the results, or you can store the programs as stored procedures in SQL Server and create applications that execute the stored procedures and process the results. stored proceduresStored procedures in SQL Server are similar to procedures in other programming languages in that theycan: Accept input parameters and return multiple values in the form of output parameters to the calling procedure or batch. Contain programming statements that perform operations in the database, including calling other procedures. Return a status value to a calling procedure or batch to indicate success or failure (and the reason for failure). You can use the Transact-SQL EXECUTE statement to run a stored procedure. Stored procedures aredifferent from functions in that they do not return values in place of their names and they cannot be used directly in an expression. functionsThe benefits of using stored procedures in SQL Server rather than Transact-SQL programs storedlocally on client computers are: They allow modular programming. You can create the procedure once, store it in the database, and call it any number of times in your program. Stored procedures can be created by a person who specializes in databaseprogramming, and they can be modified independently of the program source code. They allow faster execution. If the operation requires a large amount of Transact-SQL code or is performed repetitively, stored procedures can be faster than batches of Transact-SQL code. They are parsed andoptimized when they are created, and an in-memory version of the procedure can be used afterthe procedure is executed the first time. Transact-SQL statements repeatedly sent from theclient each time they run are compiled and optimized every time they are executed by SQLServer. They can reduce network traffic. An operation requiring hundreds of lines of Transact-SQL code can be performed through a single statement that executes the code in a procedure, rather than by sending hundreds of linesof code over the network. They can be used as a security mechanism. Users can be granted permission to execute a stored procedure even if they do not have permission to execute the procedure's statements directly. A SQL Server stored procedure is created with the Transact-SQL CREATE PROCEDURE statementand can be modified with the ALTER PROCEDURE statement. The stored procedure definitioncontains two primary components: the specification of the procedure name and its parameters, and thebody of the procedure, which contains Transact-SQL statements that perform the procedure'soperations.See AlsoCatalog Stored ProceduresSystem Stored Procedures Från Help i SQL-admin