如何为Variable中的字符串传递参数值?

时间:2015-07-29 12:44:04

标签: sql sql-server sql-server-2008 tsql sql-server-2012

有人可以帮助我如何将Parameter值传递给Variable

中的字符串

例如:

DECLARE @STR VARCHAR(MAX) = ''

DECLARE @ID INT

SET @STR = 'SELECT * FROM STUDENT WHERE STUDENT_ID=@ID'

这里我想将@ID作为参数传递给Variable @STR

6 个答案:

答案 0 :(得分:2)

使用sp_executesql来赋值参数,这也可以避免sql注入。试试这个

DECLARE @STR NVARCHAR(MAX) = ''

DECLARE @ID INT

SET @STR = 'SELECT * FROM STUDENT WHERE STUDENT_ID=@ID'

exec sp_executesql @str,'@ID INT',@ID

答案 1 :(得分:1)

使用此:

DECLARE @STR VARCHAR(MAX) = ''

DECLARE @ID INT

SET @STR = 'SELECT * FROM STUDENT WHERE STUDENT_ID=' + CAST(@ID AS VARCHAR(50))

答案 2 :(得分:0)

这是一个简单的方法:

.popover-title {

  border-bottom: 1px solid red; // added this

}

当然还有其他人。您可以在构建.popover-title { border-bottom: 0; // added this } 时使用字符串连接,或者您可以保持原样并在最终要执行字符串时使用sp_executesql的参数化调用,假设您想要执行的操作用它。

答案 3 :(得分:0)

您可以将查询编写为:

DECLARE @ID int;
--to use sp_executesql sql statement  must be a Unicode variable
DECLARE @STR nvarchar(500);     
DECLARE @ParmDefinition nvarchar(500);

/* Build the SQL string.
as a best practice you should specify column names instead of writing *
*/
SET @STR =
     N'SELECT Col1,Col2 FROM STUDENT WHERE STUDENT_ID=@ID';

SET @ParmDefinition = N'@ID Int';
/* Execute the string with the parameter value. */
SET @ID = 1;
EXECUTE sp_executesql @STR, @ParmDefinition,
                      @ID = @ID;

答案 4 :(得分:0)

为简单起见,您还可以为它创建存储过程: -

SQL中的代码

[ProcedureName] 1
--Here replace "1" with your Id

调用商店程序

<?php
  $db = mysql_connect('localhost','user','pass');
  mysql_select_db('test_db');

  $stmt = "INSERT INTO `test` (`first`,`last`,`whenadded`) VALUES ".
          "('{$first}','{$last}','SYSDATE())";
  $rslt = mysql_query($stmt);
?>

答案 5 :(得分:0)

DECLARE @STR VARCHAR(MAX)=''

DECLARE @ID INT

SET @STR ='SELECT * FROM STUDENT_ID ='+ @ ID

应该做