2009-08-07 8 views
11

J'essaie de créer une page de recherche dans ASP.NET qui me permet de rechercher des noms de tables dans Oracle. Lorsque je place le sql dans le contrôle sqldatasource, il ne reconnaît pas le paramètre: Tablename. Comment dois-je réécrire cela pour que cela fonctionne?Utiliser un paramètre dans une clause similaire dans Oracle

SELECT Owner, Table_name, Num_Rows, Tablespace_name 
FROM all_tables 
WHERE trim(upper(table_name)) LIKE trim(upper('%:TableName%')) 
+0

Um, pourquoi êtes-vous parage une expression n'a évidemment pas d'espaces avant ou arrière? –

+0

Je suppose que c'est devenu une habitude. J'ai rencontré des champs de texte et de date dans notre base de données avec des espaces qui leur sont ajoutés ..... vous ne pouvez pas les faire correspondre sans la fonction de découpage. –

Répondre

37

Pouvez-vous remplacer

'%:TableName%'

avec

'%' || :TableName || '%'

?

+1

Merci, ça a marché! –

+0

Oracle est sensible à la casse. :) – Webbanditten

1

Pour ceux qui pourraient être intéressés: Pour SQL Server intégrant le% dans le texte du paramètre comme cela fonctionne: (L'autre méthode décrite ci-dessus ne)

WHERE trim(upper(table_name)) LIKE trim(upper(@TableName)) 
Questions connexes