SQL管理工作室和绑定变量

时间:2015-11-05 10:38:10

标签: sql-server oracle ssms

我的数据库开发技能相当有限,但我最近在Oracle SQL开发人员中做了一些工作,它使用绑定变量(即“:bv1”)作为参数占位符。

现在我在使用“@ BV1”作为参数在MS SQL Server Management studio(2012版)中做了一些类似的工作,但是当我在管理工作室测试查询时,我无法找到如何声明参数(即在执行时给它们实际值)。 Oracle SQL过去常常弹出一个框来在开始执行时添加值,但我无法在MS版本中找到类似的东西。

编辑:所以只是举例说明我正在尝试执行的内容。我有一个带有where子句的select语句:

WHERE FIELD_NAME in ( @BV1,@BV2,@BV3,@BV4,@BV5,@BV6,@BV7,@BV7,@BV8,@BV8)

当我点击执行它时,只是错误说“必须声明标量变量”@ BV1“。”在Oracle中,它通常会提示我为BV提供值。

3 个答案:

答案 0 :(得分:3)

您无法在SQL Management Studio中执行此操作。您需要在脚本中声明和设置变量:

DECLARE @my_int INT 
SET @my_int = 0

答案 1 :(得分:1)

SSMS不直接支持参数化查询(如果查询需要真正参数化,则可以使用sp_executesql)。

具有局部变量的模板可用于提示值替换。按SHIFT-CTRL-M显示替换对话框。下面的模板示例。

DECLARE 
      @BV1 sysname = <@BV1, sysname, BV1 value>
    , @BV2 sysname = <@BV2, sysname, BV2 value>
    , @BV3 sysname = <@BV3, sysname, BV3 value>
    , @BV4 sysname = <@BV4, sysname, BV4 value>
    , @BV5 sysname = <@BV5, sysname, BV5 value>
    , @BV6 sysname = <@BV6, sysname, BV6 value>
    , @BV7 sysname = <@BV7, sysname, BV7 value>
    , @BV8 sysname = <@BV8, sysname, BV8 value>;

SELECT ...
WHERE FIELD_NAME in ( @BV1,@BV2,@BV3,@BV4,@BV5,@BV6,@BV7,@BV7,@BV8,@BV8);

答案 2 :(得分:0)

您必须先在脚本中声明变量:

DECLARE @BV1 AS INT = 1;

SQL Management Studio在执行时不会提示您为它们声明它们。

无论如何,在你的例子中,你似乎只想要一些简单的东西:

WHERE FIELD_NAME in ( 1 ,2 ,3 )