Presentation is loading. Please wait.

Presentation is loading. Please wait.

CF and Stored Procedures Lei Wang ALP International.

Similar presentations


Presentation on theme: "CF and Stored Procedures Lei Wang ALP International."— Presentation transcript:

1 CF and Stored Procedures Lei Wang ALP International

2 Main Topics Database Locks How Cold Fusion perform DB locks Stored Procedure Stress test to compare Cftransaction and stored procedure How to use stored procedure Common Mistakes

3 Database Locks “Lost update problem” Multiple users accessing the same data Read from database Update record User1 User2

4 Database Locks Blocking access for all other users User1 User2 Begin Transaction Commit Transaction Begin Transaction Commit Transaction Lock Read Value Update Value Lock Read Value Update Value Waiting

5 Types of Locks Table-level: supported by all database. The entire table is locked when a user is posting a transaction that utilizes a row from that table Row-level:supported by higher-end database. Only records being utilized by a transaction are locked.

6 How Cold Fusion perform DB Locks Use CFTRANSACTION to group multiple queries into a single unit. CFTRANSACTION also provides commit and rollback processing. ACTION="BEGIN" or "COMMIT" or "ROLLBACK" ISOLATION="Read_Uncommitted" or "Read_Committed" or "Repeatable_Read" CFLOCK

7 Standard usage of cftransaction(from CF Studio) INSERT INTO Courses (Number, Descript) VALUES ('#myNumber#', '#myDescription#') ……………………………………… Ending tag within the cftry block should be a cfcatch tag

8 Standard usage of cftransaction INSERT INTO Courses (Number, Descript) VALUES ('#myNumber#', '#myDescription#') ………………………………………

9 How DB tools perform Lock Transaction A logical unit of work. Begin the transaction Commit the transaction or rollback transaction

10 Standard usage of transaction BEGIN TRANSACTION MyTransaction SELECT * FROM roysched WHERE title_id LIKE ‘Pc%’ UPDATE roysched SET royalty = royalty * 1.10 WHERE title_id LIKE 'Pc%' COMMIT TRANSACTION MyTransaction

11 Stored Procedure A stored procedure is basically a precompiled program that is stored at the server site. Stored procedure is not written in SQL PL/SQL Oracle Transact-SQL Sybase & SQL Server

12 Advantage of Stored Procedure It enables you to write and maintain a single set of code that is utilized by all current and future applications that utilize the database It insulates the application developers from the structure of the database It can provide better performance.

13 Stress test LoadRunner is used to conduct 3 levels of stress test, 10, 50, 100 users. Internal network 100 M bps Cold Fusion server 5 on Windows 2000 server (1.5 Ghz CPU, 512 MB memory) SQL server 7 on the same Windows 2000 server 5 Pentium 430 Mhz Dell machines as client

14 Stress test results Userscftransaction Stored Procedure 1 0.110.11 101.961.47 50 8.154.57 100159

15 What determines which tool to use Less traffic, simple web page CFTRSACTION Heavy traffic, complicated web pages Stored procedure

16 How to write stored procedure CREATE PROCEDURE Insert_invoice @Amount smallmoney,@DiscAmt smallmoney,@DiscCode char(3),@PaymentTypeCode char(2), @Token varchar(30),@NextbContactID int,@NextInvoiceID int output AS BEGIN TRANSACTION select @NextInvoiceID=ISNULL(max(InvoiceID)+1,10000) from T_Invoice Insert into T_Invoice values( @NextInvoiceID,getdate(),@Amount,@DiscAmt,@DiscCode,@PaymentTypeCode, null,getdate(),@NextbContactID,null,@Token,'N',null,null) IF @@ERROR <>0 ROLLBACK TRANSACTION ELSE COMMIT TRANSACTION

17 How to use stored procedure Cfstoredproc tag <CFSTOREDPROC PROCEDURE ="procedure name" DATASOURCE ="ds_name" USERNAME="username" PASSWORD="password" DBSERVER="dbms" DBNAME="database name" BLOCKFACTOR="blocksize" PROVIDER="COMProvider" PROVIDERDSN="datasource" DEBUG="Yes/No" RETURNCODE="Yes/No">

18 How to user Stored Procedure Cfprocparam tag <CFPROCPARAM TYPE="IN/OUT/INOUT" VARIABLE="variable name" DBVARNAME="DB variable name" VALUE="parameter value“ CFSQLTYPE="parameter datatype“ MAXLENGTH="length" SCALE="decimal places" NULL="yes/no">

19 CFPROCPARAM Type: IN/OUT/INOUT CFSQLTYPE 17 total CF_SQL_INTEGER CF_SQL_CHAR CF_SQL_VARCHAR CF_SQL_DATE CF_SQL_MONEY

20 CFPROCPARAM DBVARNAME Start with @ @NextInvoiceID VARIABLE CF variable name

21 How to use Stored Procedure

22 Common mistakes when using Stored Procedure Declaration order in stored procedure is different from CFPROCPARAM order Error message Operand type clash: int is incompatible with text

23 Variables are not in the same order @Amount smallmoney, @DiscAmt smallmoney, @DiscCode char(3), @PaymentTypeCode char(2), @Token varchar(30), @NextContactID int, @NextInvoiceID int output

24 Common Mistakes Every In variable need a value create procedure Update_Email @StudentID int, @InvoiceID int, @Email varchar(60) as Begin SELECT@InvoiceID=InvoiceID,@Email=StudentEmail FROMT_Student WHEREStudentID=@StudentID UPDATET_Invoice SETEmail= @Email WHEREInvoiceID=@InvoiceID END

25 Every Variable need a value

26 Conflict with other DB tools CFTRANSACTION and TRIGGER Triggers are specialized stored procedures that are executed automatically when a particular event occurs and are used to enforce data integrity A lot of triggers have Rollback transaction command

27 Trigger CREATE TRIGGER Insert_T_ContactsON T_Contacts FOR INSERTASDECLARE @JustInsertedpEmail varchar(60), @ContactIDNew int,@ContactIDOld int, BEGIN SELECT@JustInsertedpEmail=PrimaryEmailAddress, @ContactIDNew=ContactID FROMINSERTED SELECT@ContactIDOld=ContactID, FROMT_Contacts WHEREPrimaryEmailAddress=@JustInsertedpEmail ANDContactID!=@ContactIDNew IF @@ROWCOUNT > 0 ROLLBACK TRANSACTION End

28 Q & A Lwang@alpi.com


Download ppt "CF and Stored Procedures Lei Wang ALP International."

Similar presentations


Ads by Google