这是我的代码
DB::statement(DB::raw('EXECUTE dbo.SP_WS_CUST_MAIN ?,?,?,?,?,?,?'),
[ $USER_ID, $CUST_PYMT_MTHD, $CUST_CMMNT, $CUST_NAME, $ANDROID_LOCATION,
DB::raw("CONVERT(VARBINARY(MAX), $value)") , $WEEKDAY]
);
如何将nvarchar(max)转换为varbinary(max)?
答案 0 :(得分:0)
我可以想到三种可能性。最简单的方法是创建一个shell存储过程(比如dbo.SP_WS_CUST_MAIN_VC
),它只接受参数,包括$value
作为varchar(max),然后将$value
转换为{ {1}}并调用目标存储过程。这样可以确保使用参数替换进行正确的引用。
第二个(也是最危险的)是直接将varbinary(max)
嵌入到参数中,打开各种SQL注入丑陋。
第三种方法是创建一个接受CONVERT
并返回varchar(max)
的UDF,然后将其嵌入基本varbinary(max)
调用中,例如:
EXECUTE
任何这些都可行,但(1)和(3)也应该是安全的。