Enthält der Parameter den Wert 'SPALTE1', so soll der Inhalt der Spalte 'SPALTE1' der Tabelle 'TAB1' ausgegeben werden. Dies sind dann beispielsweise alle Geburtsdaten, oder bei 'SPALTE2' beispielsweise alle Namen.
Ich kenne weder Sybase noch die Sprache, in der Du dort stored procedures schreiben kannst (in Oracle wäre das PL/SQL), aber Dein Problem sieht für mich so aus, daß Du zwar dort zwar SQL-Kommandos generieren kannst, daß aber Dein Parameter (vom Typ "char") dort als *Literal* eingesetzt wird.
benutze ich jetzt 'Select @PARAM1 From TAB1', so liefert er mir nicht oben genannte Geburtsdaten zurück, sondern nur den Parameter.
Was durch Dein Statement tatsächlich generiert wird, ist
SELECT 'PARAM1' FROM TAB1;
, und genau das kommt auch heraus, nämlich das Literal 'PARAM1' (auf die Tabelle wird überhaupt nicht zugegriffen).
irgendwie muß ich ihm klar machen, daß er den Wert von 'PARAM1' als Spaltenbezeichnung nehmen, und nicht diesen Wert zurückliefern soll.
Kann Deine Stored-Procedures-Sprache so etwas wie "if"? (PL/SQL kann das.) Dann ungefähr so:
if @PARAM1 == 'PARAM1'
then "SELECT PARAM1 FROM TAB1;"
else ...
Das ist nicht so elegant wie Deine Lösung, aber ...
Und die Syntax stimmt natürlich nur näherungsweise.