我想在SQL server中编写call语句 [英] I want to write call statement in SQL server
问题描述
得到一些错误
这里我的mysql代码我想写在sql server中
CREATE DEFINER =`root` @`localhost `PROCEDURE`sp_CallStatement`
(
IN vStmt VARCHAR(1000)
)
BEGIN
SET @sql = vStmt;
PREPARE s1 FROM @sql;
EXECUTE s1;
DEALLOCATE PREPARE s1;
结束$$
DELIMITER;
//错误/
消息137,级别15,状态1,过程sp_CallStatement,第8行
必须声明标量变量@sql。
消息102,级别15,状态1,过程sp_CallStatement,第11行
'PREPARE'附近的语法不正确。
我尝试过:
CREATE PROCEDURE [dbo]。[sp_CallStatement]
@Stmt VARCHAR(1000)
as
BEGIN
SET @sql = vStmt;
PREPARE s1 FROM @sql;
EXECUTE s1;
DEALLOCATE P. REPARE s1;
END
DELIMITER;
//错误/
消息137,级别15,状态1,过程sp_CallStatement,第8行>
必须声明标量变量@sql。
消息102,级别15,状态1,过程sp_CallStatement,行11
'PREPARE附近的语法不正确'。
我尝试了什么:
创建程序[dbo ]。[sp_CallStatement]
@Stmt VARCHAR(1000)
as
BEGIN
SET @sql = vStmt ;
PREPARE s1 FROM @sql;
EXECUTE s1;
DEALLOCATE PREPARE s1;
END
Msg 137,Level 15,State 1,Procedure sp_CallStatement,Line 8
必须声明标量变量@sql。As错误消息说:你没有声明
@sql
所以它不知道如何处理它。
消息102,级别15,状态1,过程sp_CallStatement,行11
'PREPARE'附近的语法不正确。PREPARE不是SQL关键字:它不知道是什么你的意思是:保留关键字(Transact-SQL)| Microsoft Docs [ ^ ]
Prepare是PHP构造,而不是SQL。这让你的SP再次对SQL注入开放......
- 这个工作正在工作
创建程序[dbo] ]。[sp_CallStatement]
@Stmt nvarchar(max)
as
BEGIN
SET NOCOUNT ON;
声明@sql nvarchar(max)
SET @ sql = @ Stmt
EXECUTE @Stmt;
结束
GO
Getting Some error
Here my mysql Code i want to write in sql server
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_CallStatement`
(
IN vStmt VARCHAR(1000)
)
BEGIN
SET @sql=vStmt;
PREPARE s1 FROM @sql;
EXECUTE s1;
DEALLOCATE PREPARE s1;
END$$
DELIMITER ;
//error/
Msg 137, Level 15, State 1, Procedure sp_CallStatement, Line 8
Must declare the scalar variable "@sql".
Msg 102, Level 15, State 1, Procedure sp_CallStatement, Line 11
Incorrect syntax near 'PREPARE'.
What I have tried:
CREATE PROCEDURE [dbo].[sp_CallStatement]
@Stmt VARCHAR(1000)
as
BEGIN
SET @sql=vStmt;
PREPARE s1 FROM @sql;
EXECUTE s1;
DEALLOCATE PREPARE s1;
END
DELIMITER ;
//error/
Msg 137, Level 15, State 1, Procedure sp_CallStatement, Line 8
Must declare the scalar variable "@sql".
Msg 102, Level 15, State 1, Procedure sp_CallStatement, Line 11
Incorrect syntax near 'PREPARE'.
What I have tried:
CREATE PROCEDURE [dbo].[sp_CallStatement]
@Stmt VARCHAR(1000)
as
BEGIN
SET @sql=vStmt;
PREPARE s1 FROM @sql;
EXECUTE s1;
DEALLOCATE PREPARE s1;
END
Msg 137, Level 15, State 1, Procedure sp_CallStatement, Line 8 Must declare the scalar variable "@sql".As the error message says: you don't declare
@sql
so it doesn't know what to do with it.
Msg 102, Level 15, State 1, Procedure sp_CallStatement, Line 11 Incorrect syntax near 'PREPARE'.PREPARE is not an SQL keyword: it doesn't know what you mean: Reserved Keywords (Transact-SQL) | Microsoft Docs[^]
Prepare is a PHP construct, not SQL. Which leaves your SP wide open to SQL injection all over again...
--This one is working
CREATE PROCEDURE [dbo].[sp_CallStatement] @Stmt nvarchar(max) as BEGIN SET NOCOUNT ON; Declare @sql nvarchar(max) SET @sql=@Stmt EXECUTE @Stmt; END GO
这篇关于我想在SQL server中编写call语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!