SQL 管理工作室和绑定变量
SQL management studio and Bind variables
我的数据库开发技能相当有限,但我最近在 Oracle SQL 开发人员中做了一些工作,使用绑定变量(即“:bv1”)作为参数占位符。
现在我在 MS SQL Server Management studio(2012 版)中使用“@BV1”作为参数做了一些类似的工作,但是当我在 management studio 中测试查询时无法找到如何声明参数(即在执行时给它们实际值)。 Oracle SQL 曾经在您开始执行时弹出一个框来添加值,但我在 MS 版本中找不到类似的东西。
编辑:所以只是为了举例说明我正在尝试执行的操作。我有一个带有 where 子句的 select 语句:
WHERE FIELD_NAME in ( @BV1,@BV2,@BV3,@BV4,@BV5,@BV6,@BV7,@BV7,@BV8,@BV8)
当我点击执行它时,它只是错误提示 "Must declare the scalar variable "@BV1"。"在 Oracle 中,它通常会提示我提供 BV 的值。
您无法在 SQL Management Studio 中执行此操作。您需要在脚本中声明和设置变量:
DECLARE @my_int INT
SET @my_int = 0
您始终必须先在脚本中声明您的变量:
DECLARE @BV1 AS INT = 1;
SQL Management Studio 在执行时不会提示为您声明它们。
无论如何,在你的例子中,你似乎只是想要一些简单的东西,比如:
WHERE FIELD_NAME in ( 1 ,2 ,3 )
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);
我的数据库开发技能相当有限,但我最近在 Oracle SQL 开发人员中做了一些工作,使用绑定变量(即“:bv1”)作为参数占位符。
现在我在 MS SQL Server Management studio(2012 版)中使用“@BV1”作为参数做了一些类似的工作,但是当我在 management studio 中测试查询时无法找到如何声明参数(即在执行时给它们实际值)。 Oracle SQL 曾经在您开始执行时弹出一个框来添加值,但我在 MS 版本中找不到类似的东西。
编辑:所以只是为了举例说明我正在尝试执行的操作。我有一个带有 where 子句的 select 语句:
WHERE FIELD_NAME in ( @BV1,@BV2,@BV3,@BV4,@BV5,@BV6,@BV7,@BV7,@BV8,@BV8)
当我点击执行它时,它只是错误提示 "Must declare the scalar variable "@BV1"。"在 Oracle 中,它通常会提示我提供 BV 的值。
您无法在 SQL Management Studio 中执行此操作。您需要在脚本中声明和设置变量:
DECLARE @my_int INT
SET @my_int = 0
您始终必须先在脚本中声明您的变量:
DECLARE @BV1 AS INT = 1;
SQL Management Studio 在执行时不会提示为您声明它们。
无论如何,在你的例子中,你似乎只是想要一些简单的东西,比如:
WHERE FIELD_NAME in ( 1 ,2 ,3 )
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);