Database Research & Development

  • Home
  • NoSQL
    • NoSQL
    • Cassandra
  • Databases
    • Database Theory
    • Database Designing
    • SQL Server Coding Standards
    • SQL Server
    • PostgreSQL
    • MySQL
    • Greenplum
    • Linux
  • Interviews
    • SQL Server Interviews
    • MySQL Interviews
    • SQL Puzzles
  • DBA Scripts
    • SQL Server DBA Scripts
    • PostgreSQL DBA Scripts
    • MySQL DBA Scripts
    • Greenplum DBA Scripts
  • Home
  • Blog Archives !
  • (: Laugh@dbrnd :)
  • Contact Me !
sqlserverinterviews
Home 2018 May SQL Server Coding Standards: Working with Stored Procedures

SQL Server Coding Standards: Working with Stored Procedures

This article is half-done without your Comment! *** Please share your thoughts via Comment ***

Prepared by Bihag Thaker

Prefix the Stored Procedure Name with ‘usp_’.

Try to include only letters in identifiers by using Pascal Casing and avoid the use of special characters in identifiers. Underscore (_) character may be used for element separation in an identifier.

Here element means Application Prefix, type of Operation, Table Name or Entity Name etc. However, word separation in single element should be achieved with PascalCasing only.

Use proper, meaningful and self-explanatory identifiers for stored procedures. Stored procedures are generally used for different actions like INSERT, UPDATE, DELETE and SELECT operations.

Following naming convention should be used for stored procedures:
‘usp_’ + + ‘_’ + + /

Here, part can be optional. can be a verb like ‘Add’, ‘Insert’, ‘Update’, ‘Change’, ‘Set’, ‘Delete’, ‘Remove’, ‘Select’ and ‘Get’ and so on. Some of the examples are:

1
2
3
4
usp_Sales_GetOrderDetails
usp_Sales_InsertOrderDetails
usp_Sales_UpdateOrderDetails
usp_Sales_DeleteOrderDetails

Use schemas to separate different sets of stored procedures across multiple applications when possible. For example, if schema Sales is used instead of ‘Sales_’ as Application Prefix, then above Stored Procedures should be as follows:

1
2
3
4
[Sales].[usp_ GetOrderDetails]
[Sales].[usp_ InsertOrderDetails]
[Sales].[usp_ UpdateOrderDetails]
[Sales].[usp_ DeleteOrderDetails]

Create stored procedures and try to implement functionalities through stored procedures wherever possible rather than using ad-hoc queries from the application.

While creating stored procedures, specify the name of the schema explicitly within which the stored procedure is to be created even if it is dbo.

Return the success or failure status from the stored procedure with the use of RETURN statement. Value 1 should be used for success and 0 for failure.

If a stored procedure is required to return some value, do not use RETURN statement. The RETURN statement is not intended for this purpose. Consider using OUTPUT parameters as required in stored procedures and pass output values from OUTPUT parameters to the application.

Use @ErrorCode OUTPUT parameter to communicate with the application any error occurred in the stored procedure.

When possible, consider single stored procedure call which returns multiple result sets to the application rather than calling stored procedure multiple times for each different result set. This reduces round trips to the database server and improves the application response time.

Do not write very lengthy stored procedures. Try to keep them as short as possible.

If business logic which needs to be implemented within a stored procedure is very lengthy, then try to break the business logic into different modules and implement each different module in its separate stored procedure and call those sub-stored procedures in the main stored procedure.

Use SET NOCOUNT ON at the beginning of the stored procedures whenever possible. This can improve the performance of the queries.

Consider declaring variables at the top of stored procedures.

Do not use temporary tables and table variables frequently. When possible, see if the same functionality can be achieved by using Table Expressions like derived tables and Common Table Expressions.

Avoid creating frequent temporary tables in IF conditions within the stored procedure.

Whenever intermediate result set needs to be stored within a stored procedure, consider implementing temporary table approach and table variable approach. Compare the results between two approaches and choose the one which is efficient.

Always use transactions in the stored procedures when multiple DML statements are performed within a unit of work.

Keep transactions as short as possible to reduce locking issues.

Do not use WITH RECOMPILE option with the stored procedures.

Following is the sample template of a stored procedure. It has been provided here only to have a basic idea of coding structure and standards that a stored procedure should follow:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
CREATE PROCEDURE [dbo].[usp_StoredProcedureName]
(
@Parameter1 INT
,@Parameter2 VARCHAR(50)
,@ReturnValue1 INT OUTPUT
,@ErrorCode INT = 0 OUTPUT
) AS
/*
**********************Creation Details**********************
Stored Procedure Name : [dbo].[usp_StoredProcedureName]
Purpose : Insert a new record in TableName
Author : Author Name
Created On : 2017/01/01
*****************************Revision Details*****************************
Project/
Revision No. Changed On Changed By Change Description
------------ ---------- ---------- ------------------
1234 2018/01/10 Mr. ABC New column 'NewColumnName' added.
1235 2018/03/16 Mr. XYZ Column 'ColumnName' deleted.
*/
 
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRANSACTION
--INSERT statement and other logic go here.
COMMIT TRANSACTION
RETURN 0
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
RETURN 1
END CATCH
END

May 29, 2018Anvesh Patel
SQL Server Coding Standards: General Guidelines and usage of ViewsSQL Server Coding Standards: Working with User Defined Functions

Leave a Reply Cancel reply

CAPTCHA
Refresh

*

Anvesh Patel
Anvesh Patel

Database Engineer

May 29, 2018 SQL Server Coding Standardsbasic sql commands, basic sql queries, coding best practices, SQL, sql basics, sql coding best practices, sql commands, sql database, sql formatter, sql language, SQL Programming, sql queries, sql queries for practice, sql query formatter, sql server format, sqlcode
About Me!

I'm Anvesh Patel, a Database Engineer certified by Oracle and IBM. I'm working as a Database Architect, Database Optimizer, Database Administrator, Database Developer. Providing the best articles and solutions for different problems in the best manner through my blogs is my passion. I have more than six years of experience with various RDBMS products like MSSQL Server, PostgreSQL, MySQL, Greenplum and currently learning and doing research on BIGData and NoSQL technology. -- Hyderabad, India.

About DBRND !

dbrnd

This is a personal blog (www.dbrnd.com).

Any views or opinions represented in this blog are personal and belong solely to the blog owner and do not represent those of people, institutions or organizations that the owner may or may not be associated with in professional or personal capacity, unless explicitly stated.

Feel free to challenge me, disagree with me, or tell me I’m completely nuts in the comments section of each blog entry, but I reserve the right to delete any comment for any reason whatsoever (abusive, profane, rude, or anonymous comments) - so keep it polite.

The content of this website is protected by copyright. No portion of this website may be copied or replicated in any form without the written consent of the website owner.

Recent Comments !
  • Anvesh Patel { Sure will do... } – May 27, 12:43 PM
  • Anvesh Patel { Great... } – May 27, 12:41 PM
  • Anvesh Patel { Great... } – May 27, 12:39 PM
  • Anvesh Patel { Great... } – May 27, 12:36 PM
  • Anvesh Patel { Great... } – May 27, 12:28 PM
  • Anvesh Patel { Great... } – May 27, 12:27 PM
  • Anvesh Patel { Great... } – May 27, 12:16 PM
  • Older »
Follow Me !
  • facebook
  • linkedin
  • twitter
  • youtube
  • google
  • flickr
© 2015 – 2019 All rights reserved. Database Research & Development (dbrnd.com)
Posting....