An SQL Stored Procedure is just a list of SQL commands to be executed together, and are intended to provide data validation procedures, access control, or just to prevent the same SQL code being needed in multiple places in external apps. Once created, the stored Procedure can be called from SQL code, or executed directly in external code just by using the name of the SP (and supplying any necessary parameters).
So the SP version of a simple command is ... just the simple command, wrapped in SQL to create the procedure:
CREATE PROCEDURE sp_SelectByID
@ID INT
AS
BEGIN
SELECT * FROM MyTable WHERE ID = @ID;
END
Once that code is executed in SQL, you can call sp_SelectByID instead of typing "
SELECT * FROM MyTable WHERE ID = @ID
" as your SQLCommand text, and telling the SqlCommand instance that this is a procedure call, not a text command (as well as providing the parameter value)
So if your existing - simple SELECT - code works in isolation and fails as an SP, then either you are creating the SP incorrectly, or calling it badly. I'd start by testign the SP in SSMS ("DB ... Programmability ... Stored Procedures ... YourSPName", right click, "Execute Stored Procedure..." will bring up a dialog for you to enter the parameter value) and see what happens there first. When that works, try calling it from VB.