<?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" type="topic" id="variables-syntax" xml:lang="zh_CN">
  <info>
    <title type="sort">1</title>
    <link type="topic" xref="query-execution-perspective"/>
    <link type="topic" xref="data-manager-perspective"/>
  </info>
  <title>SQL 代码中的变量</title>
  <p>变量(variables，有时称作<em>占位符(placeholders)</em>)是 SQL 代码中的位置，在 SQL 代码执行时它们会用实际值替换。使用变量的好处是执行时间更快(因为 SQL 代码只解析一次)以及 SQL 注入脆弱性防护。</p>
  <p>变量可以在任何 SQL 代码中使用，使用以下语法定义：</p>
  <code>
<![CDATA[##<variable name>[::<variable type>[::NULL]]]]></code>
  <p>注：</p>
  <list>
    <item><p><em>变量名</em> 可以包含任何 SQL 标识字符，也可夹杂 <code>+-.|@?</code>这些字符(不允许有空格)</p></item>
    <item><p><em>变量类型</em> 可以是：<code>string</code>、<code>boolean</code>、<code>int</code>、<code>date</code>、<code>time</code>、<code>timestamp</code>、<code>guint</code>、<code>blob</code> 和 <code>binary</code></p></item>
    <item><p>可以附加<code>::NULL</code> 来指定变量可以取特殊的 <code>NULL</code> 值。</p></item>
  </list>
  <p>例子：</p>
  <code>
##name::string
##id::int::NULL
##sales@3::date::NULL
##customers@id::int</code>
</page>
