Procedural Programming is an approach to programming that is one of the basic of building blocks for many other language designs (functional not being one).
Most languages fall into the set of "Procedural Programming" and it is probably the most natural design approach for most people (if you think in terms of OO, then I'd say you're in a minority).
BASIC is procedural.
As others have said, it is a mechanism for structuring programs in a sequential manner.
- First I do x
- Second I do y
- Thirdly I do Z
It requires a mechanism for defining "procedures" - blocks of named code similar to OO methods, that can accept zero to many parameters, and optionally return a value (which would then generally be called a function - probably leading to your confusion with functional languages)
The paradigm does not dictate what the things you do will be, or the manner of the things being passed around.
It simply describes that the program will be structured as a series of procedures (or functions) that operate in a sequential manner. The data is then defined independently of the procedures.
This differs from object-oriented programming, which structures the program around collections of data and methods (not functions) that act on that data.
One way to think about it is in terms of data scope.
In a procedural language scoping is fairly simple. A variable may be in the scope of a given procedure (declared locally), up to the level of the top thing calling stuff (declared globally), with nested scopes between.
In an object-oriented language you add a new scoping context, being that of the object currently in use, which is orthogonal to the above.
Another way to think of procedural, as compares to object-oriented is to consider an object-oriented language where all methods must be declared as static. The result is a procedural language where classes can be used to group procedures together.