Query in SQL Server to get the Parameter list of given Store Procedure

Write a Query in SQL Server to get the Parameter list of given Store Procedure.

Suppose we want to get the name of the parameter for the Store Procedure
Course_Insert_sp then folllowing needs to be executed.
SELECT * FROM sys.parameters D INNER JOIN Sys.Objects O ON O.object_id=D.object_id WHERE O.name='Course_Insert_sp'

Write a SQL Statement to Get the Definition of the Store Procedures

SQL Statement to Get the Definition of the System Store Procedures.
SELECT definition FROM sys.system_sql_modules
SQL Statement to Get the Definition of the User defined Store Procedures.
SELECT definition FROM sys.sql_modules

Query to Get the Forgien Key Name Their Primary Table and Referrence Table

Following Query will give you the List of Forgien Key in a Database with Their Primary and Referrence Tables Name.

Sample Query:
SELECT F.name AS ForgienKey,O2.name AS ParentTable,O3.name AS RefTable FROM sys.foreign_keys F
INNER JOIN Sys.Objects O2 ON O2.object_id=F.parent_object_id
INNER JOIN Sys.Objects O3 ON O3.object_id=F.referenced_object_id
If you want to get forgien key for a particular table then you can use like this:
SELECT F.name AS ForgienKey,O2.name AS ParentTable,O3.name AS RefTable FROM sys.foreign_keys F
INNER JOIN Sys.Objects O2 ON O2.object_id=F.parent_object_id
INNER JOIN Sys.Objects O3 ON O3.object_id=F.referenced_object_id
Where O3.name='Tbl_User'