Just bought this truck couple months ago for work but just recently got it insured. So the horn does not work. I have changed the horn fuse and swapped it with a working relay. When pressing the horn or panic button you can hear a click from the relay but no horn. Checked the connection with the horn in the engine. So now I am thinking its either the clock spring or horn switch in the steering wheel. Can anyone confirm the problem. A new clock spring is $300 which I cant really afford.
The fact that you can hear the horn relay clicking makes the horn button or the clock spring unlikely suspects.
Here's how the circuit is wired. I highlighted Red for Power and Green for Ground.

Relay sockets 30 & 85 always have power.
Relay socket 87 is wired (through the horn fuse) to the horns.
When you press the Horn a Ground is provided to relay socket 86 (which energizes the horn relay's magnetic coil and closes the contact between relay pins 30 & 87 and the horns toot).
Both horns are Grounded at Ground Point G100.
In your case the easiest test would be to remove the horn relay and grab a piece of wire or a paperclip and jump relay sockets 30 & 87. If the horns honk then you can grab a test light and check if there's Power on relay socket 85, and if you're getting a Ground on relay socket 86 when the horn is pressed.
If the horns don't beep then you'd use a test light to make sure relay socket 30 has power and then check Ground Point G100 on the radiator support. Also check for power on both test tabs of the horn fuse when the horn is pressed and inspect the fuse's sockets in the fuse box for corrosion or heat damage.
If all looks good then unplug the wiring connector at each horn and provide direct Power and Ground to each horn to make sure they work.
Here's how the actual Horn Relay sockets are numbered in your Underhood fuse box.

Check with a voltmeter or test light whether the horn is receiving power. If it is then the horn itself is defective.
The horn contact may have become corroded or dirty over 21 years. Wouldn't surprise me.
https://shop.advanceautoparts.com/find/2002-gmc-sierra-2500-hd-horn-contact.c9011
Ok, got a new horn contact. Replaced it. Still doesnt work. Will look at the other solutions.
I'd also bet there is a missing or corroded ground connection at the G100 radiator support, black wire as per @jack62.
Thanks for the replies. I did get it fixed today. Checked wiring from the horn with test light to see of there was power. There was, so I got a new low tone horn for $17. I thought the green wire is usually the grounded wire, but in this case it was the wire with power.
Didnt bother changing the high tone horn.
Ran into another issue with the horn. So the horn would go off randomly usually when I am turning. Other drivers were probably pissed off. It got so bad so I just removed the fuse.
I wonder if it has something to do with the new horn contact I installed or there is issue with wiring.
Since it stopped beeping when you removed the fuse you've ruled out any issue with the wiring between the underhood fuse box and the horns
.
That just leaves either a faulty horn relay or a problem with that ground circuit going from the horn switch to horn relay socket 86
.
The fact that you just replaced the horn switch and it's happening when you turn the steering wheel sure seems like there's a short to ground happening at the horn switch. Either one of the wires is shorting to ground in there or the switch itself is defective
.