我有一个工作正常的查询:
BULK INSERT ZIPCodes
FROM 'e:\5-digit Commercial.csv'
WITH
(
FIRSTROW = 2 ,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
Run Code Online (Sandbox Code Playgroud)
但现在我想为它创建一个存储过程.
我写了下面的代码来制作它的存储过程:
create proc dbo.InsertZipCode
@filepath varchar(500)='e:\5-digit Commercial.csv'
as
begin
BULK INSERT ZIPCodes
FROM @filepath
WITH
(
FIRSTROW = 2 ,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
end
Run Code Online (Sandbox Code Playgroud)
但它显示错误:
消息102,级别15,状态1,过程InsertZipCode,行6'@ filepath'附近的语法不正确.
消息319,级别15,状态1,过程InsertZipCode,第7行关键字'with'附近的语法不正确.如果此语句是公用表表达式,xmlnamespaces子句或更改跟踪上下文子句,则必须以分号终止先前的语句.
请告诉我我做错了什么以及如何使其在存储过程中工作.
谢谢
我已经读过,为了防止SQL注入必须使用PreparedStatement.
这是否意味着如果我使用perparedStatement然后没有人可以在我的任何页面中执行SQL注入?SQL注入是否万无一失?如果没有,那么请举一些例子来证明这一点.
是否有任何函数或库可用于清理用户输入.例如,如果用户输入一个调用的文本,baily's那么我应该'在将其发送到mysql查询之前将其转义.类似地,我应该能够过滤空字符和\n,\ t,\ r \n等.就像在PHP中我们mysql_real_escape_string($input)有什么用Java来做这个吗?