我创建了一个wpf应用程序,添加了一个带有ODP托管驱动程序连接的数据集。查询工作但我似乎无法让这个好玩:
SELECT *
FROM EMPLOYEE
WHERE lastname LIKE '%' + :lastname + '%'
或者
SELECT *
FROM EMPLOYEE
WHERE lastname LIKE '%' || :lastname || '%'
查询构建器抛出“内部错误,无效窗格配置”,查询不返回任何内容。如果我在:lastname中传递通配符,它可以正常工作,但我需要它在查询中。什么是正确的语法?
SELECT *
FROM EMPLOYEE
WHERE lastname LIKE :lastname
:lastname = '%Bob%' --Works
答案 0 :(得分:0)
它看起来像这样......?
SELECT *
FROM EMPLOYEE
WHERE lastname LIKE '%Bob%'
答案 1 :(得分:0)
这不适用于PL-SQL:
SELECT *
FROM EMPLOYEE
WHERE lastname LIKE '%' + :lastname + '%'
这应该:
SELECT *
FROM EMPLOYEE
WHERE lastname LIKE '%' || :lastname || '%'
但我明白,如果它没有。当你说Query Builder时,我假设我们正在谈论VS DataSet / TableAdapter设计师,对吧?我在一些PL-SQL上看到它打了很多,所以尝试其他类似的东西:
SELECT *
FROM AS_PRODUCT
WHERE AS_PRODUCT.NAME LIKE CONCAT( '%', CONCAT(:lastname , '%'));
但您仍然会收到无效的窗格配置'。
有一件事是,有些地方会为生产设置架构,并且测试架构设计相同,并且在同一台服务器上但名称不同。因此,您需要使用指向一个模式的特定连接字符串来设置数据集,并且查询构建器会在DataSet设计器生成的代码中将该模式前缀粘贴到SQL上。然后通过更改web.config中的文本将连接字符串切换到具有不同模式名称的生产,并且所有生成的SQL都不起作用。所以我总是推动运行相同模式,名称和所有模式的两台服务器来避免这个问题。
我提出这个问题是因为通过在ADO.NET中手工编写查询,您可以避免这两个问题。