Here is an example of setting an option in a statement inside a procedure using a plan guide: USE tempdb; GO CREATE PROCEDURE dbo.test AS BEGIN SET NOCOUNT ON; SELECT svp.name AS login_name, dbp.name AS user_name FROM sys.database_principals AS dbp INNER JOIN sys.server_principals AS svp ON dbp.sid = svp.sid; END GO -- Use Ctrl+M to capture the execution plan -- You will see loop joins used EXEC dbo.test; Now generate the execution plan for this statement with a forced join strategy: SELECT svp.name AS login_name, dbp.name AS user_name FROM sys.database_principals AS dbp INNER JOIN sys.server_principals AS svp ON dbp.sid = svp.sid OPTION (HASH JOIN); Copy the execution plan XML and paste it to the query window. Replace any occurence of ' (single quote) with '''' (**four** single quotes). Your final parameter for the sp_create_plan_guide procedure will be in the form: @xmlPlan = 'OPTION (USE PLAN N''your plan goes here'')' Now you can see why four quotes: escape once to put the XML inside a string literal, escape twice to put the XML inside a string literal inside another string literal. Make sure that the XML plan is pasted right after the opening `N''`: any whitespace or newline will make it invalid. DECLARE @planXML nvarchar(max) = 'OPTION (USE PLAN N'' ... ... ... your modified XML plan here ... ... '')'; EXEC sp_create_plan_guide @name = 'UseHash', @stmt = 'SELECT svp.name AS login_name, dbp.name AS user_name FROM sys.database_principals AS dbp INNER JOIN sys.server_principals AS svp ON dbp.sid = svp.sid;', @type = 'OBJECT', @module_or_batch = 'dbo.test', @hints = @planXML GO -- Use Ctrl+M to capture the execution plan -- You will see hash joins used EXEC dbo.test;