Looking at a few rows of the procedure cache, I see this:
UseCountsRefCountsCacheobjtypeObjtypedbidSQLSTMT
11Compiled Plan StubAdhocNULLSELECT * FROM dbo.REFER WHERE USERID = 186 AND MSGID = 296
11Compiled Plan StubAdhocNULLSELECT * FROM dbo.REFER WHERE USERID = 209 AND MSGID = 162
11Compiled Plan StubAdhocNULLSELECT * FROM dbo.REFER WHERE USERID = 131 AND MSGID = 294
11Compiled Plan StubAdhocNULLSELECT * FROM dbo.REFER WHERE USERID = 210 AND MSGID = 359
11Compiled Plan StubAdhocNULLSELECT * FROM dbo.REFER WHERE USERID = 182 AND MSGID = 280
11Compiled Plan StubAdhocNULLSELECT * FROM dbo.REFER WHERE USERID = 189 AND MSGID = 358
etc etc etc
It is the same query over and over. Why would it not reuse the compiled plan?