0

所以我是 SQL 新手。我必须确保该文件适用于 Oracle 和 SQL Server。为此,我使用 SQL Tools (Oracle) 和 SQL Server Management Studio。

我开始学习 PL/SQL 和 TSQL 之间的区别(我认为),这基本上只是为了让它们一起工作,因为它们之间存在细微的差异。

好吧,我有这段代码,它适用于一个(SQL 工具),而不适用于另一个。我不知道为什么。他们都需要工作并且是相同的代码。

    SELECT DISTINCT * FROM
(
SELECT
somestuff
WHERE mu.id = {my_users_id}
)
WHERE (1=1)
{{parent:ParentUsers:mu_ID}}

现在,我不知道为什么这不起作用。它说 WHERE 子句有问题。如果我注释掉该行WHERE mu.id = {my_users_id}并删除,{{parent:ParentUsers:mu_ID}}那么它可以在 SQL 工具中使用。但不在 Management Studio 中。

为什么?这里发生了什么?

我认为注释掉代码,任何代码的意义在于它不会被阅读,但我似乎有时在某些情况下会被阅读?我在这里错了吗?谢谢

编辑:我意识到缺少代码无济于事,所以我尝试在这里更改一些内容以尽可能多地代表真实代码。

    SELECT DISTINCT * FROM
(
SELECT
eb2.id AS EB_ID,
ebmystuff_pkg.user_entry_count(EB2.user_code, EB2.address_code, EB2.other_column) ENTRIES,
eb.other_column AS OTHER_COLUMN
FROM MY_TABLE mt
WHERE mu.id = {my_users_id}
)
WHERE (1=1)
{{parent:ParentUsers:mu_ID}}
4

2 回答 2

0

我在您的代码中看到的第一个想法是错误的:

SELECT DISTINCT * FROM
(
  SELECT somestuff
  **FROM** sometable mu
  WHERE mu.id = {my_users_id}
)
WHERE (1=1)
{{parent:ParentUsers:mu_ID}}

现在,我知道在 SQL Server 中,{} 没有任何意义……要在其中添加变量,您应该使用 @my_users_id。

于 2016-03-09T12:49:02.347 回答
0

我发现答案是为其添加别名。

我做了

   SELECT DISTINCT * FROM
(
  SELECT somestuff
  **FROM** sometable mu
 -- WHERE mu.id = {my_users_id}
)m
WHERE (1=1)
于 2016-03-09T15:18:21.573 回答