As generic repositories can be use for Insert, Update, Delete etc. but it is limited only for simple Crud operations, if I want to use my generic repositories for some more complex insertion and searching like joining of tables and retrieve by stored procedures. And insert data to multiple tables using stored procedures so how will I handle it from generic repositories?
1. Can I call stored procedures from my generic repository?
2. Is it a good idea to use generic repositories + stored procedures?
3. Will it compatible for criteria base complex search?
Your question should be more specific in order to give you a right answer, but here's my two cents:
Yes it is possible to call stored procedures from your repository. If you are using Entity Framework, it is possible to map stored procedures to a CLR object, which you can call from your repository. Depending on the framework (or lack of it) you use, you'll need to figure out the right syntax to do so.
Personally I wouldn't use this approach as I'd rather put business logic in the business layer. However in some cases it will definitely be useful, for instance when performance is ultra important or where you want complete control over your queries, or some other complex operations.
Do keep in mind that you do can use LINQ to build your complex queries (joining, ordering, filtering, aggregating, selecting,, ..). Some parts can even be automated, like the WHERE clause using PredicateBuilder, enabling you to dynamically create and/or queries based on user input, search criteria,..
In general, YES it is possible but it all depends on the context where you're working in.