一个sql存储过程中@sql语句加入引号的问题

作者&投稿:貊堂 (若有异议请与网页底部的电邮联系)
sql存储过程 sql语句拼接问题 为啥传进去的值带双引号呢~

我这里测试可行
alter Procedure dd
@whereStr nvarchar(200)='1=1',--条件
@orderStr nvarchar(200)='order by no',--排序
@descStr nvarchar(200)='desc'--正序或者倒叙排序
as
declare @sqlstr Nvarchar(4000)
set @SqlStr=N'select * from tablea_3 where '+@whereStr+' '+@orderStr+' '+@descStr;
--print @SqlStr

exec (@SqlStr)



--select * from tablea_3



GO

变量放在字串中是不会起作用的. OPENDATASOURCE的第二个参数要使用@filepath这个变量值, 那么写成字符串相加:
insert into staff select * from OPENDATASOURCE('Microsoft.Ace.OLEDB.12.0',
'Data Source=' + @filepath + ';Extended Properties=Excel 8.0')...Sheet1$

首先'.'符号是php的字符串连接符,2个点的作用是连接成一句话。
第一句话的单引号是为了,给这个值加上单引号。到时候sql语句,就是这样了。select
user_id
from
user
where
`user_id`='11111'
其实这样写很是看起来不明了,这样写的话,就好看多了
$uid=$_post['user_id'];
$sql="select
user_id
from
user
where
`user_id`='$uid'";

转义一下就好了在sql中中的转义为单引号('),针对你的那个语句来说变成这样就可以了,如下:
set @sql='select * from a where 姓名='‘张三’''

我没有试过,你试下好了

补充:你也可以在你的开始定义个常量
declare @xm varchar(10)

set @sql='select * from a where 姓名=@xm'

set @sql='select * from a where 姓名=''张三'''
除了开头和结尾的两个'不变 其他的一个'换成2个'


sql server存储过程中的“N”是什么意思?
即使所引用的列已定义为 \\x0d\\x0aUnicode 类型,也应如此。如果不使用 N 前缀,字符串将转换为数据库的默认代码页。这可能导致不识别某些字符。\\x0d\\x0a\\x0d\\x0a例如,在前面示例中创建的存储过程可以按以下方式在服务器上执行:\\x0d\\x0a\\x0d\\x0a复制代码\\x0d\\x0a\\x0d\\x0a...

pgsql在存储过程中如何指定schema
pgsql在存储过程中运行一条SQL语句指定schema。pgsql在存储过程中,实际上可用的方法是通过运行一条SQL语句,将用户的searchpath设置为指定的schema。

SQL中存储过程out与output有什么不同,感觉它俩是同一个意思,一样的用法...
MSSQL和Oracle倒是有很多不同的地方。所以我特意打开MSSQL的服务,在MSSQL里写了这么一个脚本,希望能帮助到你。因为本人是做.Net方向的开发者,所以用了C#语言中 以下是脚本内容:--SQLQuery Create By Faywoolcreate proc Proc_OutPutTest--创建@numA int,--numA为存储过程的参数@numB int,--...

使用SQL语句创建存储过程
:2、然后,输入SQL语句。如下:CREATE PROCEDURE byroyalty1 @percentage int AS select au_id from titleauthor where titleauthor.royaltyper = @percentage GO 3、然后,点击确定之后,命令就会自动添加进查询中:4、然后执行一下刚输入的命令:5、最后,就可以在弹出的小窗口中查看存储过程了:...

在sql存储过程中有两个参数
set @result=@result+@result1+' 'end select @result 上边的可以实现你所要的功能的,,顶二楼,,参考二楼写的,,如果要改为存储过程,,你只需把上边的代码改改就行的,,对于起始时间和结束时间的判断,,你可以再后台代码中实现,,也可以在存储过程中实现,,只需要使用if else就行了 ...

SQL中创建的存储过程要怎么样才能运行?
创建语法:CREATE PROCEDURE<过程名>[:版本号][@<参数名><参数类型>[=<默认值>][OUTPUT]……][WITH RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION]AS <SQL语句组> 其中:版本号是可选的整数,它用于将有相同名字的存储过程编为不同的组.在执行时可选版本,但创建时一次只能创建一个版本;OUTPUT选项用于...

SQL中触发器、存储过程
3、至于什么时候用触发器,什么时候用存储过程,这个就要根据你的使用情况了。比如说,在对某张表进行了特定操作后,我们让系统自动去执行一些操作,这个时候就可以使用触发器。而存储过程呢,如果我们在某一个事务中要进行的sql操作特别多,那么我们就可以把这些sql语句用存储过程来汇总,达到执行一遍存储...

plsql 的测试窗口正在执行存储过程,可以关闭么?
可以的,正在执行中,那个执行按钮旁边有个红色的闪电的按钮,点一下那个按钮,就可以强制中断了。

sql server 怎样在存储过程中调用存储过程
SQL 代码 ?--定义存储过程 create procedure [sys].[sp_add_product](,@m_hotcount int output )--存储过程的调用 declare @m_hotcount int exec dbo.sp_add_product @m_viewcount,@m_hotcount output ps:下面给大家介绍sql server 查找某个字段在哪些表中存在 如果数据库的命名是比较规范的...

sqlserver快速查找所有存储过程中是否包含某
在sql server中快速查看存储过程中的内容是否包含特殊的字符,如下所示:mssql-查找存储过程包含的字符串 主要根据两张系统表,查找出存储过程中的内容 请采纳,如有疑问,及时沟通!

乐清市18476639235: 一个sql存储过程中@sql语句加入引号的问题 -
仇琦复方: set @sql='select * from a where 姓名=''张三''' 除了开头和结尾的两个'不变 其他的一个'换成2个'

乐清市18476639235: sql 中加@代表什么意义,最好举例说明 通俗些的 谢谢! -
仇琦复方: 声明局部变量declare @re 声明全局变量declare @@re 这样声明的话可以避免 你声明的变量和你某个表中的某一列的列名相同 在调用的时候避免 混淆

乐清市18476639235: sql存储过程中@SQLScript语句中如何加入单引号? -
仇琦复方: 1 2 3 4 5 6createproc [aa] as declare@sqlScript asvarchar(8000) set@sqlScript='select * from products where name=''商品''' print @sqlScript exec(sqlScript) 注:在动态SQL语句中两个单引号代表一个单引号 另:你很懒,只知道截图,就不会把语句贴上来,下次再遇到这样的问题.将不再回答

乐清市18476639235: 存储过程中怎么将变量加入到sql语句当中
仇琦复方: if @srID&gt;0 set @condition =@condition+' and srID='+convert(varchar(10),@srID) if len(@srName)&gt;0 set @condition =@condition+' and srName='+@srName declare @sql varchar(max) set @sql=' select srID,srName,srNotes,cTime from SourceRegion where '+@condition exec(@sql) 用动态语句

乐清市18476639235: sql 里定义参数时用@和不用有什么区别 -
仇琦复方: 当然有区别了,而且区别很大.如果写成 DECLARE name int 会有语法错误,错误信息是:INT 不是可以识别的CURSOR(游标)选项 @加上后面的内容,说明这个是一个参数,如果不加的话,你怎么用参数呢,比如你本来是想给参数赋值,...

乐清市18476639235: 在存储过程中@sqlstatus是什么意思 -
仇琦复方: 在使用游标的时候,@@sqlstatus保存着FETCH语句执行状态的信息,其值与含意如下:0:成功完成FETCH语句;1:FETCH语句有错误;2:表示结果集中不再有数据,即游标已经移至结果集中最后一行,并已经提交了一条FETCH语句

乐清市18476639235: sql2000语句中包含的@是什么意思?
仇琦复方:过程中的参数.在 CREATE PROCEDURE 语句中可以声明一个或多个参数.用户必须在执行过程时提供每个所声明参数的值(除非定义了该参数的默认值).存储过程最多可以有 2.100 个参数. 使用 @ 符号作为第一个字符来指定参数名称.参数名称必须符合标识符的规则.每个过程的参数仅用于该过程本身;相同的参数名称可以用在其它过程中.默认情况下,参数只能代替常量,而不能用于代替表名、列名或其它数据库对象的名称.

乐清市18476639235: 怎样SQL存储过程中执行动态SQL语句 -
仇琦复方: 有时需要在oracle 存储过程中执行动态SQL 语句 ,例如表名是动态的,或字段是动态的,或查询命令是动态的,可用下面的方法:set serveroutput ondeclaren number;sql_stmt varchar2(50); t varchar2(20);beginexecute immediate 'alter session ...

乐清市18476639235: SQL 中存储过程怎么使用? -
仇琦复方: 一、简单的储存过程: 1、创建一个存储过程 create procedure GetUsers() begin select * from user; end;123452、调用存储过程 call GetUsers();123、删除存储过程 drop procedure if exists GetUsers;二、带参数的存储过程 1、MySql 支持 IN ...

乐清市18476639235: 请问怎样向SQL SERVER 2000的存储过程中传递SQL语句 -
仇琦复方: create procedure myprocdure @sqlstr nvarchar(1000) as exec (@sqlstr) go 使用: EXEC MYPROCDURE N'SELECT * FROM TABLENAME'...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网